{"version":3,"sources":["jsdelivr-header.js","/npm/pmtiles@3.0.3/dist/pmtiles.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,IAAI,QAAU,MACZ,IAAI,EAAY,OAAO,eACnB,EAAmB,OAAO,yBAC1B,EAAoB,OAAO,oBAC3B,EAAe,OAAO,UAAU,eAChC,EAAQ,KAAK,IAcb,EAAU,CAAC,EAAQ,EAAa,IAC3B,IAAI,SAAQ,CAAC,EAAS,KAC3B,IAAI,EAAa,IACf,IACE,EAAK,EAAU,KAAK,GACtB,CAAE,MAAO,GACP,EAAO,EACT,GAEE,EAAY,IACd,IACE,EAAK,EAAU,MAAM,GACvB,CAAE,MAAO,GACP,EAAO,EACT,GAEE,EAAQ,GAAM,EAAE,KAAO,EAAQ,EAAE,OAAS,QAAQ,QAAQ,EAAE,OAAO,KAAK,EAAW,GACvF,GAAM,EAAY,EAAU,MAAM,EAAQ,IAAc,OAAO,IAK/D,EAAa,CAAC,EAnCH,EAAC,EAAQ,KACtB,IAAK,IAAI,KAAQ,EACf,EAAU,EAAQ,EAAM,CAAE,IAAK,EAAI,GAAO,YAAY,GAAO,EAkCjE,CAAS,EAAY,CACnB,YAAa,IAAM,GACnB,aAAc,IAAM,GACpB,YAAa,IAAM,GACnB,WAAY,IAAM,GAClB,QAAS,IAAM,GACf,SAAU,IAAM,EAChB,mBAAoB,IAAM,GAC1B,mBAAoB,IAAM,GAC1B,SAAU,IAAM,GAChB,cAAe,IAAM,GACrB,SAAU,IAAM,GAChB,UAAW,IAAM,GACjB,mBAAoB,IAAM,EAC1B,WAAY,IAAM,GAClB,YAAa,IAAM,GACnB,YAAa,IAAM,KAIrB,IAAI,EAAK,WACL,EAAM,YACN,EAAM,WACN,EAAO,IAAI,EAAG,CAChB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,EACA,EAEA,IAEE,EAAO,IAAI,EAAG,CAChB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GAEA,EACA,IAEE,EAAO,IAAI,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,KAC7E,EAAO,SAAS,EAAI,GAEtB,IADA,IAAI,EAAI,IAAI,EAAI,IACP,EAAI,EAAG,EAAI,KAAM,EACxB,EAAE,GAAK,GAAS,GAAK,EAAG,EAAI,GAE9B,IAAI,EAAI,IAAI,EAAI,EAAE,KAClB,IAAS,EAAI,EAAG,EAAI,KAAM,EACxB,IAAK,IAAI,EAAI,EAAE,GAAI,EAAI,EAAE,EAAI,KAAM,EACjC,EAAE,GAAK,EAAI,EAAE,IAAM,EAAI,EAG3B,MAAO,CAAE,IAAG,IACd,EACI,EAAK,EAAK,EAAM,GAChB,EAAK,EAAG,EACR,EAAQ,EAAG,EACf,EAAG,IAAM,IAAK,EAAM,KAAO,GAC3B,IAUI,EAVA,EAAK,EAAK,EAAM,GAChB,EAAK,EAAG,EAER,GADQ,EAAG,EACL,IAAI,EAAI,QAClB,IAAK,EAAI,EAAG,EAAI,QAAS,EAGvB,GAAS,OADT,GAAS,OADT,GAAS,MAAJ,IAAc,GAAS,MAAJ,IAAc,KACnB,GAAS,MAAJ,IAAc,KACnB,GAAS,KAAJ,IAAa,EACrC,EAAI,KAAW,MAAJ,IAAc,GAAS,IAAJ,IAAY,IAAM,EAIlD,IAAI,EAAO,SAAS,EAAI,EAAI,GAI1B,IAHA,IAAI,EAAI,EAAG,OACP,EAAI,EACJ,EAAI,IAAI,EAAI,GACT,EAAI,IAAK,EACV,EAAG,MACH,EAAE,EAAG,GAAK,GAEhB,IAII,EAJA,EAAK,IAAI,EAAI,GACjB,IAAK,EAAI,EAAG,EAAI,IAAM,EACpB,EAAG,GAAK,EAAG,EAAI,GAAK,EAAE,EAAI,IAAM,EAGlC,GAAI,EAAG,CACL,EAAK,IAAI,EAAI,GAAK,GAClB,IAAI,EAAM,GAAK,EACf,IAAK,EAAI,EAAG,EAAI,IAAK,EACnB,GAAI,EAAG,GAIL,IAHA,IAAI,EAAK,GAAK,EAAI,EAAG,GACjB,EAAM,EAAK,EAAG,GACd,EAAI,EAAG,EAAG,GAAK,MAAQ,EAClB,EAAI,GAAK,GAAK,GAAO,EAAG,GAAK,IAAK,EACzC,EAAG,EAAI,IAAM,GAAO,CAI5B,MAEE,IADA,EAAK,IAAI,EAAI,GACR,EAAI,EAAG,EAAI,IAAK,EACf,EAAG,KACL,EAAG,GAAK,EAAI,EAAG,EAAG,GAAK,OAAS,GAAK,EAAG,IAI9C,OAAO,CACT,EACI,EAAM,IAAI,EAAG,KACjB,IAAK,EAAI,EAAG,EAAI,MAAO,EACrB,EAAI,GAAK,EAEX,IAAK,EAAI,IAAK,EAAI,MAAO,EACvB,EAAI,GAAK,EAEX,IAAK,EAAI,IAAK,EAAI,MAAO,EACvB,EAAI,GAAK,EAEX,IAAK,EAAI,IAAK,EAAI,MAAO,EACvB,EAAI,GAAK,EAEX,IAGI,EAHA,EAAM,IAAI,EAAG,IACjB,IAAK,EAAI,EAAG,EAAI,KAAM,EACpB,EAAI,GAAK,EAEX,IAAI,EAAuB,EAAK,EAAK,EAAG,GACpC,EAAuB,EAAK,EAAK,EAAG,GACpC,EAAM,SAAS,GAEjB,IADA,IAAI,EAAI,EAAE,GACD,EAAI,EAAG,EAAI,EAAE,SAAU,EAC1B,EAAE,GAAK,IACT,EAAI,EAAE,IAEV,OAAO,CACT,EACI,EAAO,SAAS,EAAG,EAAG,GACxB,IAAI,EAAI,EAAI,EAAI,EAChB,OAAQ,EAAE,GAAK,EAAE,EAAI,IAAM,KAAW,EAAJ,GAAS,CAC7C,EACI,EAAS,SAAS,EAAG,GACvB,IAAI,EAAI,EAAI,EAAI,EAChB,OAAQ,EAAE,GAAK,EAAE,EAAI,IAAM,EAAI,EAAE,EAAI,IAAM,MAAY,EAAJ,EACrD,EAaI,EAAK,CACP,iBACA,qBACA,yBACA,mBACA,kBACA,oBACA,CACA,cACA,qBACA,uBACA,8BACA,oBACA,mBACA,oBAGE,EAAM,SAAS,EAAK,EAAK,GAC3B,IAAI,EAAI,IAAI,MAAM,GAAO,EAAG,IAI5B,GAHA,EAAE,KAAO,EACL,MAAM,mBACR,MAAM,kBAAkB,EAAG,IACxB,EACH,MAAM,EACR,OAAO,CACT,EACI,EAAQ,SAAS,EAAK,EAAI,EAAK,GACjC,IAAI,EAAK,EAAI,OAAQ,EAAK,EAAO,EAAK,OAAS,EAC/C,IAAK,GAAM,EAAG,IAAM,EAAG,EACrB,OAAO,GAAO,IAAI,EAAG,GACvB,IAAI,GAAS,GAAe,GAAR,EAAG,EACnB,EAAO,EAAG,EACT,IACH,EAAM,IAAI,EAAQ,EAAL,IACf,IAAI,EAAO,SAAS,GAClB,IAAI,EAAK,EAAI,OACb,GAAI,EAAK,EAAI,CACX,IAAI,EAAO,IAAI,EAAG,KAAK,IAAS,EAAL,EAAQ,IACnC,EAAK,IAAI,GACT,EAAM,CACR,CACF,EACI,EAAQ,EAAG,GAAK,EAAG,EAAM,EAAG,GAAK,EAAG,EAAK,EAAG,GAAK,EAAG,EAAK,EAAG,EAAG,EAAK,EAAG,EAAG,EAAM,EAAG,EAAG,EAAM,EAAG,EAC/F,EAAY,EAAL,EACX,EAAG,CACD,IAAK,EAAI,CACP,EAAQ,EAAK,EAAK,EAAK,GACvB,IAAI,EAAO,EAAK,EAAK,EAAM,EAAG,GAE9B,GADA,GAAO,GACF,EAAM,CACT,IAAuB,EAAI,GAAvB,EAAgB,IAAP,EA7DP,GAAK,EAAI,IA6DoB,GAAK,EAAI,EAAI,IAAM,EAAG,EAAI,EAAI,EACjE,GAAI,EAAI,EAAI,CACN,GACF,EAAI,GACN,KACF,CACI,GACF,EAAK,EAAK,GACZ,EAAI,IAAI,EAAI,SAAS,EAAG,GAAI,GAC5B,EAAG,EAAI,GAAM,EAAG,EAAG,EAAI,EAAU,EAAJ,EAAO,EAAG,EAAI,EAC3C,QACF,CAAO,GAAY,GAAR,EACT,EAAK,EAAM,EAAK,EAAM,EAAM,EAAG,EAAM,OAClC,GAAY,GAAR,EAAW,CAClB,IAAI,EAAO,EAAK,EAAK,EAAK,IAAM,IAAK,EAAQ,EAAK,EAAK,EAAM,GAAI,IAAM,EACnE,EAAK,EAAO,EAAK,EAAK,EAAM,EAAG,IAAM,EACzC,GAAO,GAGP,IAFA,IAAI,EAAM,IAAI,EAAG,GACb,EAAM,IAAI,EAAG,IACR,EAAI,EAAG,EAAI,IAAS,EAC3B,EAAI,EAAK,IAAM,EAAK,EAAK,EAAU,EAAJ,EAAO,GAExC,GAAe,EAAR,EACP,IAAI,EAAM,EAAI,GAAM,GAAU,GAAK,GAAO,EACtC,EAAM,EAAK,EAAK,EAAK,GACzB,IAAS,EAAI,EAAG,EAAI,GAAM,CACxB,IAEI,EAFA,EAAI,EAAI,EAAK,EAAK,EAAK,IAG3B,GAFA,GAAW,GAAJ,GACH,EAAI,GAAK,GACL,GACN,EAAI,KAAO,MACN,CACL,IAAI,EAAI,EAAG,EAAI,EAOf,IANS,IAAL,GACF,EAAI,EAAI,EAAK,EAAK,EAAK,GAAI,GAAO,EAAG,EAAI,EAAI,EAAI,IACrC,IAAL,GACP,EAAI,EAAI,EAAK,EAAK,EAAK,GAAI,GAAO,GACtB,IAAL,IACP,EAAI,GAAK,EAAK,EAAK,EAAK,KAAM,GAAO,GAChC,KACL,EAAI,KAAO,CACf,CACF,CACA,IAAI,EAAK,EAAI,SAAS,EAAG,GAAO,EAAK,EAAI,SAAS,GAClD,EAAM,EAAI,GACV,EAAM,EAAI,GACV,EAAK,EAAK,EAAI,EAAK,GACnB,EAAK,EAAK,EAAI,EAAK,EACrB,MACE,EAAI,GACN,GAAI,EAAM,EAAM,CACV,GACF,EAAI,GACN,KACF,CACF,CACI,GACF,EAAK,EAAK,QAGZ,IAFA,IAAI,GAAO,GAAK,GAAO,EAAG,GAAO,GAAK,GAAO,EACzC,EAAO,GACF,EAAO,EAAK,CACnB,IAAoC,GAAhC,EAAI,EAAG,EAAO,EAAK,GAAO,KAAiB,EAE/C,IADA,GAAW,GAAJ,GACG,EAAM,CACV,GACF,EAAI,GACN,KACF,CAGA,GAFK,GACH,EAAI,GACF,EAAM,IACR,EAAI,KAAQ,MACT,IAAW,KAAP,EAAY,CACnB,EAAO,EAAK,EAAK,KACjB,KACF,CACE,IAAI,EAAM,EAAM,IAChB,GAAI,EAAM,IAAK,CACb,IAAmB,EAAI,EAAnB,EAAI,EAAM,KACd,EAAM,EAAK,EAAK,GAAM,GAAK,GAAK,GAAK,EAAG,GACxC,GAAO,CACT,CACA,IAAI,GAAI,EAAG,EAAO,EAAK,GAAO,GAAM,GAAO,IAAK,EAC3C,IACH,EAAI,GACN,GAAW,GAAJ,GACH,EAAK,EAAG,IACZ,GAAI,GAAO,EAAG,CACR,EAAI,EAAK,IACb,GAAM,EAAO,EAAK,IAAQ,GAAK,GAAK,EAAG,GAAO,CAChD,CACA,GAAI,EAAM,EAAM,CACV,GACF,EAAI,GACN,KACF,CACI,GACF,EAAK,EAAK,QACZ,IAAI,GAAM,EAAK,EACf,GAAI,EAAK,EAAI,CACX,IAAI,GAAS,EAAK,EAAI,GAAO,KAAK,IAAI,EAAI,IAG1C,IAFI,GAAS,EAAK,GAChB,EAAI,GACC,EAAK,KAAQ,EAClB,EAAI,GAAM,EAAK,GAAS,EAC5B,CACA,KAAO,EAAK,GAAK,GAAM,EACrB,EAAI,GAAM,EAAI,EAAK,GACnB,EAAI,EAAK,GAAK,EAAI,EAAK,EAAI,GAC3B,EAAI,EAAK,GAAK,EAAI,EAAK,EAAI,GAC3B,EAAI,EAAK,GAAK,EAAI,EAAK,EAAI,GAE7B,EAAK,EACP,CACF,CACA,EAAG,EAAI,EAAI,EAAG,EAAI,EAAM,EAAG,EAAI,EAAI,EAAG,EAAI,EACtC,IACF,EAAQ,EAAG,EAAG,EAAI,EAAK,EAAG,EAAI,EAAI,EAAG,EAAI,EAC7C,QAAU,GACV,OAAO,GAAM,EAAI,OAAS,EAlLlB,SAAS,EAAG,EAAG,IACd,MAAL,GAAa,EAAI,KACnB,EAAI,IACG,MAAL,GAAa,EAAI,EAAE,UACrB,EAAI,EAAE,QACR,IAAI,EAAI,IAAI,EAAG,EAAI,GAEnB,OADA,EAAE,IAAI,EAAE,SAAS,EAAG,IACb,CACT,CA0KkC,CAAI,EAAK,EAAG,EAC9C,EACI,EAAqB,IAAI,EAAG,GA0BhC,SAAS,EAAW,EAAM,GACxB,IAfiB,EACb,EAcA,EA1BI,SAAS,GACL,IAAR,EAAE,IAAoB,KAAR,EAAE,IAAqB,GAAR,EAAE,IACjC,EAAI,EAAG,qBACT,IAAI,EAAM,EAAE,GACR,EAAK,GACC,EAAN,IACF,GAA6B,GAAtB,EAAE,IAAM,EAAE,KAAO,IAC1B,IAAK,IAAI,GAAM,GAAO,EAAI,IAAM,GAAO,EAAI,GAAI,EAAK,EAAG,IAAO,EAAE,MAEhE,OAAO,GAAY,EAAN,EACf,CAgBW,CAAI,GAGb,OAFI,EAAK,EAAI,EAAK,QAChB,EAAI,EAAG,qBACF,EAAM,EAAK,SAAS,GAAK,GAAI,CAAE,EAAG,GAAK,GAAQ,EAAK,KAAO,IAAI,GAjBlE,GADa,EAkB4D,GAjBnE,QACF,EAAE,EAAI,GAAK,EAAE,EAAI,IAAM,EAAI,EAAE,EAAI,IAAM,GAAK,EAAE,EAAI,IAAM,MAAQ,IAgBa,GAAQ,EAAK,WACpG,CACA,SAAS,EAAW,EAAM,GACxB,OAAO,EAAM,EAAK,UAjBD,EAiBc,EAjBX,EAiBiB,GAAQ,EAAK,YAhB/B,IAAP,GAAP,EAAE,KAAiB,EAAE,IAAM,EAAI,IAAM,EAAE,IAAM,EAAI,EAAE,IAAM,KAC5D,EAAI,EAAG,sBACJ,EAAE,IAAM,EAAI,MAAQ,GACvB,EAAI,EAAG,uBAAgC,GAAP,EAAE,GAAU,OAAS,cAAgB,eAC9C,GAAjB,EAAE,IAAM,EAAI,KAY4C,GAAI,CAAE,EAAG,GAAK,GAAQ,EAAK,IAAK,GAAQ,EAAK,YAjBrG,IAAS,EAAG,CAkBtB,CACA,SAAS,EAAe,EAAM,GAC5B,OAAkB,IAAX,EAAK,IAAuB,KAAX,EAAK,IAAwB,GAAX,EAAK,GAAU,EAAW,EAAM,GAA0B,IAAP,GAAV,EAAK,KAAiB,EAAK,IAAM,EAAI,IAAM,EAAK,IAAM,EAAI,EAAK,IAAM,GAb1J,SAAqB,EAAM,GACzB,OAAO,EAAM,EAAM,CAAE,EAAG,GAAK,GAAQ,EAAK,IAAK,GAAQ,EAAK,WAC9D,CAW+J,CAAY,EAAM,GAAQ,EAAW,EAAM,EAC1M,CACA,IAAI,EAA2B,oBAAf,aAA8C,IAAI,YAElE,IACE,EAAG,OAAO,EAAI,CAAE,QAAQ,GAE1B,CAAE,MAAO,GACT,CAGA,IAAI,EAAQ,CAAC,EAAG,IACP,EAAI,EAAM,EAAG,GAElB,EAAU,CAAC,EAAG,IACT,KAAK,MAAM,EAAI,EAAM,EAAG,IAE7B,EAAY,CAAC,EAAM,IACd,EAAM,EAAK,UAAU,EAAM,GAAG,GAAO,GAAK,EAAK,SAAS,GAE7D,EAAY,CAAC,EAAM,IACd,EAAM,EAAK,UAAU,EAAM,GAAG,GAAO,IAAM,EAAK,UAAU,GAAK,GAEpE,EAAU,CAAC,EAAI,EAAI,EAAI,EAAM,KAC/B,GAAI,IAAO,EAAK,SAAS,GACvB,OAAO,EAAK,EAAK,SAAS,GAC5B,MAAM,EAAI,EAAU,EAAM,EAAI,GAC9B,GAAI,IAAO,EACT,OAAO,EAAK,EACd,MAAM,EAAI,EAAU,EAAM,EAAI,GAC9B,OAAI,IAAO,EACF,EAAK,EACP,CAAC,EAgBN,EAAY,CAAC,EAAM,EAAG,EAAG,KAC3B,MAAM,EAAY,EAAU,EAAM,EAAG,EAAG,GACxC,OAAI,EACK,CACL,IACA,IACA,IACA,OAAQ,EAAU,GAClB,OAAQ,EAAU,GAClB,OAAO,GAGJ,IAAI,EAET,EAAY,CAAC,EAAM,EAAG,EAAG,KAC3B,IAAI,EAAI,EACJ,EAAI,EAAK,WAAa,GAAK,EAC/B,KAAO,GAAK,GAAG,CACb,MAAM,EAAI,EAAI,GAAK,EACb,EAAM,EAAQ,EAAG,EAAG,EAAG,EAAU,GAAJ,GACnC,GAAI,EAAM,EACR,EAAI,EAAI,MACH,MAAI,EAAM,GAGf,MAAO,CAAC,EAAU,EAAU,GAAJ,EAAS,GAAI,EAAK,UAAc,GAAJ,EAAS,IAAI,IAFjE,EAAI,EAAI,CAGV,CACF,CACA,OAAO,IAAI,EAET,EAAY,CAAC,EAAG,IACd,EAAE,QAAU,EAAE,MACT,GAEJ,EAAE,OAAS,EAAE,OACR,EAEN,EAAE,IAAM,EAAE,EACL,EAAE,EAAI,EAAE,EAEb,EAAE,IAAM,EAAE,EACL,EAAE,EAAI,EAAE,EAEV,EAAE,EAAI,EAAE,EAEb,EAAa,CAAC,EAAU,KAC1B,MAAM,EAAO,EAAS,SAAa,GAAJ,GAE/B,MAAO,CACL,EAFe,IAAP,EAGR,EAAG,EAAU,EAAc,GAAJ,EAAS,GAChC,EAAG,EAAU,EAAc,GAAJ,EAAS,GAChC,OAAQ,EAAU,EAAc,GAAJ,EAAS,GACrC,OAAQ,EAAS,UAAc,GAAJ,EAAS,IAAI,GACxC,MAAO,GAAQ,GAAM,EACtB,EAEC,EAAW,IACb,MAAM,EAAU,GACV,EAAO,IAAI,SAAS,GAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,WAAa,GAAI,IACxC,EAAQ,KAAK,EAAW,EAAM,IAEhC,OAAO,EAAgB,EAAQ,EAE7B,EAAmB,IACrB,EAAQ,KAAK,GACb,MAAM,EAAS,IAAI,YAAY,GAAK,EAAQ,QACtC,EAAM,IAAI,WAAW,GAC3B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,MAAM,EAAQ,EAAQ,GACtB,IAAI,EAAI,EAAM,EACV,EAAM,QACR,GAAQ,KACV,EAAQ,GAAJ,GAAU,EACd,EAAQ,GAAJ,EAAS,GAAe,IAAV,EAAM,EACxB,EAAQ,GAAJ,EAAS,GAAK,EAAM,GAAK,EAAI,IACjC,EAAQ,GAAJ,EAAS,GAAK,EAAM,GAAK,GAAK,IAClC,EAAQ,GAAJ,EAAS,GAAe,IAAV,EAAM,EACxB,EAAQ,GAAJ,EAAS,GAAK,EAAM,GAAK,EAAI,IACjC,EAAQ,GAAJ,EAAS,GAAK,EAAM,GAAK,GAAK,IAClC,EAAQ,GAAJ,EAAS,GAAoB,IAAf,EAAM,OACxB,EAAQ,GAAJ,EAAS,GAAgC,IAA3B,EAAQ,EAAM,OAAQ,GACxC,EAAQ,GAAJ,EAAS,GAAiC,IAA5B,EAAQ,EAAM,OAAQ,IACxC,EAAQ,GAAJ,EAAS,IAAkC,IAA5B,EAAQ,EAAM,OAAQ,IACzC,EAAQ,GAAJ,EAAS,IAAkC,IAA5B,EAAQ,EAAM,OAAQ,IACzC,EAAQ,GAAJ,EAAS,IAAkC,IAA5B,EAAQ,EAAM,OAAQ,IACzC,EAAQ,GAAJ,EAAS,IAAqB,IAAf,EAAM,OACzB,EAAQ,GAAJ,EAAS,IAAM,EAAM,QAAU,EAAI,IACvC,EAAQ,GAAJ,EAAS,IAAM,EAAM,QAAU,GAAK,IACxC,EAAQ,GAAJ,EAAS,IAAM,EAAM,QAAU,GAAK,GAC1C,CACA,OAAO,CAAM,EAuJf,IAAI,EAAa,CACf,UAxIF,SAAmB,GACjB,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,QAAa,EAAO,SAAS,EAAG,OAChC,EAAW,IAAI,SAAS,EAAK,MAC7B,EAAW,EAAS,UAAU,GAAG,GACjC,EAAc,EAAS,UAAU,GAAG,GACpC,EAAM,IAAI,YAAY,SACtB,EAAe,KAAK,MACxB,EAAI,OAAO,IAAI,SAAS,EAAK,KAAM,GAAI,KAEzC,IAAI,EAAkB,EACW,SAA7B,EAAa,cACf,EAAkB,GAEpB,IAAI,EAAU,EACV,YAAa,IACf,GAAW,EAAa,SAE1B,IAAI,EAAU,EACV,YAAa,IACf,GAAW,EAAa,SAE1B,IAAI,EAAY,EACZ,EAAY,EACZ,EAAa,EACb,GAAU,IACV,GAAU,GACV,EAAS,IACT,EAAS,GACb,GAAI,EAAa,OAAQ,CACvB,MAAM,EAAQ,EAAa,OAAO,MAAM,KACxC,GAAU,EAAM,GAChB,GAAU,EAAM,GAChB,GAAU,EAAM,GAChB,GAAU,EAAM,EAClB,CACA,GAAI,EAAa,OAAQ,CACvB,MAAM,EAAQ,EAAa,OAAO,MAAM,KACxC,GAAa,EAAM,GACnB,GAAa,EAAM,GACnB,GAAc,EAAM,EACtB,CA6BA,MA5Be,CACb,YAAa,EAAS,UAAU,GAAG,GACnC,oBAAqB,GAAK,EAC1B,oBAAmC,GAAd,EACrB,mBAAoB,GACpB,mBAAoB,EACpB,oBAAqB,EACrB,yBAAqB,EACrB,eAAgB,EAChB,oBAAgB,EAChB,kBAAmB,EACnB,eAAgB,EAChB,gBAAiB,EACjB,WAAW,EACX,oBAAqB,EACrB,kBACA,SAAU,EACV,QAAS,EACT,QAAS,EACT,SACA,SACA,SACA,SACA,aACA,YACA,YACA,KAAM,EAAK,KAGf,GACF,EAiEE,OAhEF,SAAgB,EAAQ,EAAQ,EAAO,EAAG,EAAG,EAAG,GAC9C,OAAO,EAAQ,KAAM,MAAM,YACzB,IAAI,QAAgB,EAAM,eACxB,EACA,EAAO,oBACP,EAAO,oBACP,GAEyB,IAAvB,EAAO,cACT,EAAU,EAAQ,IAEpB,MAAM,EAAQ,EAAU,IAAI,SAAS,GAAU,EAAG,EAAG,GACrD,GAAI,EAAO,CAET,IAAI,SADe,EAAO,SAAS,EAAM,OAAQ,EAAM,OAAQ,IAC3C,KACpB,MAAM,EAAO,IAAI,SAAS,GAI1B,OAHyB,KAArB,EAAK,SAAS,IAAkC,MAArB,EAAK,SAAS,KAC3C,EAAW,EAAe,IAAI,WAAW,KAEpC,CACL,KAAM,EAEV,CACA,MAAM,EA9GO,EAAC,EAAM,KACtB,GAAI,EAAK,WAAa,GACpB,OAAO,KACT,MAAM,EAAa,EAAK,WAAa,GAC/B,EAAQ,EAAW,EAAM,EAAa,GAC5C,GAAI,EAAM,MAAO,CACf,MAAM,EAAY,EAAM,EAClB,EAAY,EAAK,EAAI,EAG3B,MAAO,CAAE,EAAG,EAAW,EAFT,KAAK,MAAM,EAAK,GAAK,GAAK,IAEP,EADnB,KAAK,MAAM,EAAK,GAAK,GAAK,IAE1C,CACA,OAAO,IAAI,EAkGU,CAAW,IAAI,SAAS,GAAU,CAAE,IAAG,IAAG,MAC7D,GAAI,EAAY,CACd,MAAM,EA5NO,EAAC,EAAM,EAAG,EAAG,KAC9B,MAAM,EAAY,EAAU,EAAU,IAAJ,EAAS,EAAG,GAC9C,OAAI,EACK,CACL,IACA,IACA,IACA,OAAQ,EAAU,GAClB,OAAQ,EAAU,GAClB,OAAO,GAGJ,IAAI,EAgNc,CACnB,IAAI,SAAS,GACb,EAAW,EACX,EAAW,EACX,EAAW,GAEb,GAAI,EAAc,CAChB,IAAI,QAAgB,EAAM,eACxB,EACA,EAAa,OACb,EAAa,OACb,GAEyB,IAAvB,EAAO,cACT,EAAU,EAAQ,IAEpB,MAAM,EAAY,EAAU,IAAI,SAAS,GAAU,EAAG,EAAG,GACzD,GAAI,EAAW,CAMb,IAAI,SALe,EAAO,SACxB,EAAU,OACV,EAAU,OACV,IAEkB,KACpB,MAAM,EAAO,IAAI,SAAS,GAI1B,OAHyB,KAArB,EAAK,SAAS,IAAkC,MAArB,EAAK,SAAS,KAC3C,EAAW,EAAe,IAAI,WAAW,KAEpC,CACL,KAAM,EAEV,CACF,CACF,CAEF,GACF,GAOI,EAAqB,CAAC,EAAQ,KAChC,IAAI,GAAS,EACT,EAAW,GA4Df,OAAO,IA3DK,EAAE,UAAU,OAAO,CAC7B,WAAY,CAAC,EAAO,KAClB,MAAM,EAAK,SAAS,cAAc,OAC5B,EAAa,IAAI,gBACjB,EAAS,EAAW,OAmC1B,OAlCA,EAAG,OAAS,KACV,EAAW,OAAO,EAEf,IACH,EAAO,YAAY,MAAM,IACC,IAApB,EAAO,SACT,QAAQ,MACN,uKAE2B,IAApB,EAAO,SAChB,EAAW,YACkB,IAApB,EAAO,SAChB,EAAW,aACkB,IAApB,EAAO,SAChB,EAAW,aACkB,IAApB,EAAO,WAChB,EAAW,aACb,IAEF,GAAS,GAEX,EAAO,OAAO,EAAM,EAAG,EAAM,EAAG,EAAM,EAAG,GAAQ,MAAM,IACrD,GAAI,EAAK,CACP,MAAM,EAAO,IAAI,KAAK,CAAC,EAAI,MAAO,CAAE,KAAM,IACpC,EAAW,OAAO,IAAI,gBAAgB,GAC5C,EAAG,IAAM,EACT,EAAG,YAAS,EACZ,OAAK,EAAQ,EACf,KACC,OAAO,IACR,GAAe,eAAX,EAAE,KACJ,MAAM,CACR,IAEK,CAAE,EAEX,YAAa,SAAS,GACpB,MAAM,EAAO,KAAK,OAAO,GACpB,IAGD,EAAK,GAAG,QACV,EAAK,GAAG,SACV,EAAK,GAAG,MAAQ,EAChB,EAAK,GAAG,OAAS,EACjB,EAAK,GAAG,SAAU,EAClB,EAAE,QAAQ,OAAO,EAAK,WACf,KAAK,OAAO,GACnB,KAAK,KAAK,aAAc,CACtB,KAAM,EAAK,GACX,OAAQ,KAAK,iBAAiB,KAElC,IAEK,CAAQ,EAAQ,EAwBrB,EAAW,MACb,WAAA,GAvBa,IAAC,EAwBZ,KAAK,OAAS,CAAC,EAAQ,IAAoB,EAAQ,KAAM,MAAM,YAC7D,GAAoB,SAAhB,EAAO,KAAiB,CAC1B,MAAM,EAAc,EAAO,IAAI,OAAO,IACtC,IAAI,EAAY,KAAK,MAAM,IAAI,GAC1B,IACH,EAAY,IAAI,GAAQ,GACxB,KAAK,MAAM,IAAI,EAAa,IAE9B,MAAM,QAAU,EAAU,YAC1B,MAAO,CACL,KAAM,CACJ,MAAO,CAAC,GAAG,EAAO,mBAClB,QAAS,EAAE,QACX,QAAS,EAAE,QACX,OAAQ,CAAC,EAAE,OAAQ,EAAE,OAAQ,EAAE,OAAQ,EAAE,SAG/C,CACA,MAAM,EAAK,IAAI,OAAO,yCAChB,EAAS,EAAO,IAAI,MAAM,GAChC,IAAK,EACH,MAAM,IAAI,MAAM,gCAElB,MAAM,EAAa,EAAO,GAC1B,IAAI,EAAW,KAAK,MAAM,IAAI,GACzB,IACH,EAAW,IAAI,GAAQ,GACvB,KAAK,MAAM,IAAI,EAAY,IAE7B,MAAM,EAAI,EAAO,GACX,EAAI,EAAO,GACX,EAAI,EAAO,GACX,QAAe,EAAS,YACxB,QAAyB,MAAZ,OAAmB,EAAS,EAAS,QAAQ,GAAI,GAAI,EAAG,EAAgB,QAC3F,OAAI,EACK,CACL,KAAM,IAAI,WAAW,EAAK,MAC1B,aAAc,EAAK,aACnB,QAAS,EAAK,SAGM,IAApB,EAAO,SACF,CAAE,KAAM,IAAI,YAEd,CAAE,KAAM,KACjB,IACA,KAAK,MAtEO,EAsES,KAAK,OAtEP,CAAC,EAAmB,KACzC,GAAI,aAAgB,gBAClB,OAAO,EAAG,EAAmB,GAE/B,MAAM,EAAkB,IAAI,gBAgB5B,OAfA,EAAG,EAAmB,GAAiB,MACpC,GACQ,OACL,EACA,EAAO,KACP,EAAO,cAAgB,GACvB,EAAO,SAAW,MAGrB,GACQ,EAAK,KAEd,OAAO,GACA,EAAK,KAEP,CAAE,OAAQ,IAAM,EAAgB,QAAS,GAmD9C,KAAK,MAAwB,IAAI,GACnC,CACA,GAAA,CAAI,GACF,KAAK,MAAM,IAAI,EAAE,OAAO,SAAU,EACpC,CACA,GAAA,CAAI,GACF,OAAO,KAAK,MAAM,IAAI,EACxB,GAIF,SAAS,EAAM,EAAK,GAClB,OAAsB,YAAd,IAAS,IAAmB,IAAQ,EAC9C,CA6BA,SAAS,GAAW,GAClB,MAAM,EAAM,EAAE,IACd,IAAI,EAAI,EAAI,EAAE,OACV,EAAU,IAAJ,EACV,OAAI,EAAI,IACC,GACT,EAAI,EAAI,EAAE,OACV,IAAY,IAAJ,IAAY,EAChB,EAAI,IACC,GACT,EAAI,EAAI,EAAE,OACV,IAAY,IAAJ,IAAY,GAChB,EAAI,IACC,GACT,EAAI,EAAI,EAAE,OACV,IAAY,IAAJ,IAAY,GAChB,EAAI,IACC,GACT,EAAI,EAAI,EAAE,KACV,IAAY,GAAJ,IAAW,GA/CrB,SAA6B,EAAG,GAC9B,MAAM,EAAM,EAAE,IACd,IAAI,EAAI,EAAI,EAAE,OACV,GAAS,IAAJ,IAAY,EACrB,GAAI,EAAI,IACN,OAAO,EAAM,EAAG,GAGlB,GAFA,EAAI,EAAI,EAAE,OACV,IAAU,IAAJ,IAAY,EACd,EAAI,IACN,OAAO,EAAM,EAAG,GAGlB,GAFA,EAAI,EAAI,EAAE,OACV,IAAU,IAAJ,IAAY,GACd,EAAI,IACN,OAAO,EAAM,EAAG,GAGlB,GAFA,EAAI,EAAI,EAAE,OACV,IAAU,IAAJ,IAAY,GACd,EAAI,IACN,OAAO,EAAM,EAAG,GAGlB,GAFA,EAAI,EAAI,EAAE,OACV,IAAU,IAAJ,IAAY,GACd,EAAI,IACN,OAAO,EAAM,EAAG,GAGlB,GAFA,EAAI,EAAI,EAAE,OACV,IAAU,EAAJ,IAAU,GACZ,EAAI,IACN,OAAO,EAAM,EAAG,GAClB,MAAM,IAAI,MAAM,yCAClB,CAqBS,CAAoB,EAAK,MAClC,CACA,SAAS,GAAO,EAAG,EAAI,EAAI,GACzB,GAAW,IAAP,EAAU,CACD,IAAP,IACF,EAAG,GAAK,EAAI,EAAI,EAAG,GACnB,EAAG,GAAK,EAAI,EAAI,EAAG,IAErB,MAAM,EAAI,EAAG,GACb,EAAG,GAAK,EAAG,GACX,EAAG,GAAK,CACV,CACF,CACA,SAAS,GAAU,EAAG,GACpB,MAAM,EAAI,EAAM,EAAG,GACnB,IAAI,EAAK,EACL,EAAK,EACL,EAAI,EACR,MAAM,EAAK,CAAC,EAAG,GACf,IAAI,EAAI,EACR,KAAO,EAAI,GACT,EAAK,EAAI,EAAI,EACb,EAAK,GAAK,EAAI,GACd,GAAO,EAAG,EAAI,EAAI,GAClB,EAAG,IAAM,EAAI,EACb,EAAG,IAAM,EAAI,EACb,GAAQ,EACR,GAAK,EAEP,MAAO,CAAC,EAAG,EAAG,GAAI,EAAG,GACvB,CACA,IAAI,GAAW,CACb,EACA,EACA,EACA,GACA,GACA,IACA,KACA,KACA,MACA,MACA,OACA,QACA,QACA,SACA,SACA,UACA,WACA,WACA,YACA,YACA,aACA,cACA,cACA,eACA,eACA,gBACA,iBAEF,SAAS,GAAY,EAAG,EAAG,GACzB,GAAI,EAAI,GACN,MAAM,MAAM,sDAEd,GAAI,EAAI,EAAM,EAAG,GAAK,GAAK,EAAI,EAAM,EAAG,GAAK,EAC3C,MAAM,MAAM,sCAEd,MAAM,EAAM,GAAS,GAErB,IAAI,EAAK,EACL,EAAK,EACL,EAAI,EACR,MAAM,EAAK,CAAC,EAAG,GACf,IAAI,EALM,EAAM,EAAG,GAKP,EACZ,KAAO,EAAI,GACT,GAAM,EAAG,GAAK,GAAK,EAAI,EAAI,EAC3B,GAAM,EAAG,GAAK,GAAK,EAAI,EAAI,EAC3B,GAAK,EAAI,GAAK,EAAI,EAAK,GACvB,GAAO,EAAG,EAAI,EAAI,GAClB,GAAQ,EAEV,OAAO,EAAM,CACf,CACA,SAAS,GAAY,GACnB,IAAI,EAAM,EAEV,IAAK,IAAI,EAAK,EAAG,EAAK,GAAI,IAAM,CAC9B,MAAM,GAAY,GAAK,IAAO,GAAK,GACnC,GAAI,EAAM,EAAW,EACnB,OAAO,GAAU,EAAI,EAAI,GAE3B,GAAO,CACT,CACA,MAAM,MAAM,qDACd,CACA,IAAI,GAA8B,CAAE,IAClC,EAAa,EAAsB,QAAI,GAAK,UAC5C,EAAa,EAAmB,KAAI,GAAK,OACzC,EAAa,EAAmB,KAAI,GAAK,OACzC,EAAa,EAAqB,OAAI,GAAK,SAC3C,EAAa,EAAmB,KAAI,GAAK,OAClC,GANyB,CAO/B,IAAe,CAAC,GACnB,SAAS,GAAkB,EAAK,GAC9B,OAAO,EAAQ,KAAM,MAAM,YACzB,GAAoB,IAAhB,GAAgD,IAAhB,EAClC,OAAO,EAET,GAAoB,IAAhB,EAA8B,CAChC,QAA8C,IAAnC,WAAW,oBACpB,OAAO,EAAe,IAAI,WAAW,IAEvC,MAAM,EAAS,IAAI,SAAS,GAAK,KACjC,IAAK,EACH,MAAM,MAAM,kCAEd,MAAM,EAAS,EAAO,YAEpB,IAAI,WAAW,oBAAoB,SAErC,OAAO,IAAI,SAAS,GAAQ,aAC9B,CACA,MAAM,MAAM,mCACd,GACF,CACA,IAAI,GAA2B,CAAE,IAC/B,EAAU,EAAmB,QAAI,GAAK,UACtC,EAAU,EAAe,IAAI,GAAK,MAClC,EAAU,EAAe,IAAI,GAAK,MAClC,EAAU,EAAgB,KAAI,GAAK,OACnC,EAAU,EAAgB,KAAI,GAAK,OACnC,EAAU,EAAgB,KAAI,GAAK,OAC5B,GAPsB,CAQ5B,IAAY,CAAC,GAEhB,SAAS,GAAS,EAAS,GACzB,IAAI,EAAI,EACJ,EAAI,EAAQ,OAAS,EACzB,KAAO,GAAK,GAAG,CACb,MAAM,EAAI,EAAI,GAAK,EACb,EAAM,EAAS,EAAQ,GAAG,OAChC,GAAI,EAAM,EACR,EAAI,EAAI,MACH,MAAI,EAAM,GAGf,OAAO,EAAQ,GAFf,EAAI,EAAI,CAGV,CACF,CACA,GAAI,GAAK,EAAG,CACV,GAA6B,IAAzB,EAAQ,GAAG,UACb,OAAO,EAAQ,GAEjB,GAAI,EAAS,EAAQ,GAAG,OAAS,EAAQ,GAAG,UAC1C,OAAO,EAAQ,EAEnB,CACA,OAAO,IACT,CACA,IAAI,GAAa,MACf,WAAA,CAAY,GACV,KAAK,KAAO,CACd,CACA,MAAA,GACE,OAAO,KAAK,KAAK,IACnB,CACA,QAAA,CAAS,EAAQ,GACf,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAO,KAAK,KAAK,MAAM,EAAQ,EAAS,GAE9C,MAAO,CAAE,WADO,EAAK,cAEvB,GACF,GAEE,GAAc,MAChB,WAAA,CAAY,EAAK,EAAgB,IAAI,SACnC,KAAK,IAAM,EACX,KAAK,cAAgB,EACrB,KAAK,YAAa,CACpB,CACA,MAAA,GACE,OAAO,KAAK,GACd,CACA,UAAA,CAAW,GACT,KAAK,cAAgB,CACvB,CACA,QAAA,CAAS,EAAQ,EAAQ,EAAc,GACrC,OAAO,EAAQ,KAAM,MAAM,YACzB,IAAI,EACA,EACA,EACF,EAAS,GAET,EAAa,IAAI,gBACjB,EAAS,EAAW,QAEtB,MAAM,EAAiB,IAAI,QAAQ,KAAK,eAExC,IAAI,EADJ,EAAe,IAAI,QAAS,SAAS,KAAU,EAAS,EAAS,KAE7D,KAAK,aACP,EAAQ,UAEV,IAAI,QAAa,MAAM,KAAK,IAAK,CAC/B,SACA,QACA,QAAS,IAGX,GAAe,IAAX,GAAgC,MAAhB,EAAK,OAAgB,CACvC,MAAM,EAAe,EAAK,QAAQ,IAAI,iBACtC,IAAK,IAAiB,EAAa,WAAW,YAC5C,MAAM,MAAM,0CAEd,MAAM,GAAgB,EAAa,OAAO,GAC1C,QAAa,MAAM,KAAK,IAAK,CAC3B,SACA,MAAO,SACP,QAAS,CAAE,MAAO,YAAW,EAAe,KAGhD,CACA,IAAI,EAAU,EAAK,QAAQ,IAAI,QAI/B,IAHe,MAAX,OAAkB,EAAS,EAAQ,WAAW,SAChD,EAAU,MAEQ,MAAhB,EAAK,QAAkB,GAAQ,GAAW,IAAY,EAExD,MADA,KAAK,YAAa,EACZ,IAAI,GAAa,GAEzB,GAAI,EAAK,QAAU,IACjB,MAAM,MAAM,sBAAsB,EAAK,UAEzC,MAAM,EAAgB,EAAK,QAAQ,IAAI,kBACvC,GAAoB,MAAhB,EAAK,UAAoB,IAAkB,EAAgB,GAG7D,MAFI,GACF,EAAW,QACP,MACJ,6IAIJ,MAAO,CACL,WAFc,EAAK,cAGnB,KAAM,QAAW,EACjB,aAAc,EAAK,QAAQ,IAAI,uBAAoB,EACnD,QAAS,EAAK,QAAQ,IAAI,iBAAc,EAE5C,GACF,GAEF,SAAS,GAAU,EAAG,GACpB,MAAM,EAAK,EAAE,UAAU,EAAS,GAAG,GAC7B,EAAK,EAAE,UAAU,EAAS,GAAG,GACnC,OAAO,EAAK,EAAM,EAAG,IAAM,CAC7B,CACA,SAAS,GAAc,EAAO,GAC5B,MAAM,EAAI,IAAI,SAAS,GACjB,EAAc,EAAE,SAAS,GAC/B,GAAI,EAAc,EAChB,MAAM,MACJ,2BAA2B,oDAG/B,MAAO,CACL,cACA,oBAAqB,GAAU,EAAG,GAClC,oBAAqB,GAAU,EAAG,IAClC,mBAAoB,GAAU,EAAG,IACjC,mBAAoB,GAAU,EAAG,IACjC,oBAAqB,GAAU,EAAG,IAClC,oBAAqB,GAAU,EAAG,IAClC,eAAgB,GAAU,EAAG,IAC7B,eAAgB,GAAU,EAAG,IAC7B,kBAAmB,GAAU,EAAG,IAChC,eAAgB,GAAU,EAAG,IAC7B,gBAAiB,GAAU,EAAG,IAC9B,UAA8B,IAAnB,EAAE,SAAS,IACtB,oBAAqB,EAAE,SAAS,IAChC,gBAAiB,EAAE,SAAS,IAC5B,SAAU,EAAE,SAAS,IACrB,QAAS,EAAE,SAAS,KACpB,QAAS,EAAE,SAAS,KACpB,OAAQ,EAAE,SAAS,KAAK,GAAQ,IAChC,OAAQ,EAAE,SAAS,KAAK,GAAQ,IAChC,OAAQ,EAAE,SAAS,KAAK,GAAQ,IAChC,OAAQ,EAAE,SAAS,KAAK,GAAQ,IAChC,WAAY,EAAE,SAAS,KACvB,UAAW,EAAE,SAAS,KAAK,GAAQ,IACnC,UAAW,EAAE,SAAS,KAAK,GAAQ,IACnC,OAEJ,CACA,SAAS,GAAiB,GACxB,MAAM,EAAI,CAAE,IAAK,IAAI,WAAW,GAAS,IAAK,GACxC,EAAa,GAAW,GACxB,EAAU,GAChB,IAAI,EAAS,EACb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,IAAK,CACnC,MAAM,EAAI,GAAW,GACrB,EAAQ,KAAK,CAAE,OAAQ,EAAS,EAAG,OAAQ,EAAG,OAAQ,EAAG,UAAW,IACpE,GAAU,CACZ,CACA,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,IAC9B,EAAQ,GAAG,UAAY,GAAW,GAEpC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,IAC9B,EAAQ,GAAG,OAAS,GAAW,GAEjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,IAAK,CACnC,MAAM,EAAI,GAAW,GAEnB,EAAQ,GAAG,OADH,IAAN,GAAW,EAAI,EACG,EAAQ,EAAI,GAAG,OAAS,EAAQ,EAAI,GAAG,OAEvC,EAAI,CAE5B,CACA,OAAO,CACT,CAiBA,IAAI,GAAe,cAAc,QAEjC,SAAS,GAAiB,EAAQ,GAChC,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,QAAa,EAAO,SAAS,EAAG,OAEtC,GAA6B,QADnB,IAAI,SAAS,EAAK,MACtB,UAAU,GAAG,GACjB,MAAM,IAAI,MAAM,0CAElB,GAzBJ,SAAuB,GACrB,MAAM,EAAI,IAAI,SAAS,GACvB,OAA6B,IAAzB,EAAE,UAAU,GAAG,IACjB,QAAQ,KACN,4GAEK,GAEoB,IAAzB,EAAE,UAAU,GAAG,IACjB,QAAQ,KACN,4GAEK,GAEF,CACT,CAUQ,CAAc,EAAK,MAAQ,EAC7B,MAAO,OAAO,EAAW,UAAU,IAErC,MACM,EAAS,GADI,EAAK,KAAK,MAAM,EApNf,KAqNqB,EAAK,MACxC,EAAc,EAAK,KAAK,MAC5B,EAAO,oBACP,EAAO,oBAAsB,EAAO,qBAEhC,EAAS,GAAG,EAAO,YAAY,EAAO,MAAQ,MAAM,EAAO,uBAAuB,EAAO,sBACzF,EAAU,SACR,EAAW,EAAa,EAAO,sBAEvC,MAAO,CAAC,EAAQ,CAAC,EAAQ,EAAQ,OAAQ,GAC3C,GACF,CACA,SAAS,GAAa,EAAQ,EAAY,EAAQ,EAAQ,GACxD,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,QAAa,EAAO,SAAS,EAAQ,OAAQ,EAAQ,EAAO,MAE5D,EAAY,SADC,EAAW,EAAK,KAAM,EAAO,sBAEhD,GAAyB,IAArB,EAAU,OACZ,MAAM,IAAI,MAAM,8BAElB,OAAO,CACT,GACF,CACA,IAtxCoB,GAsxChB,GAAqB,MACvB,WAAA,CAAY,EAAkB,IAAK,GAAW,EAAM,EAAa,IAC/D,KAAK,MAAwB,IAAI,IACjC,KAAK,gBAAkB,EACvB,KAAK,QAAU,EACf,KAAK,WAAa,CACpB,CACA,SAAA,CAAU,GACR,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAW,EAAO,SAClB,EAAa,KAAK,MAAM,IAAI,GAClC,GAAI,EAAY,CACd,EAAW,SAAW,KAAK,UAE3B,OADa,EAAW,IAE1B,CACA,MAAM,QAAY,GAAiB,EAAQ,KAAK,YAYhD,OAXI,EAAI,IACN,KAAK,MAAM,IAAI,EAAI,GAAG,GAAI,CACxB,SAAU,KAAK,UACf,KAAM,EAAI,GAAG,KAGjB,KAAK,MAAM,IAAI,EAAU,CACvB,SAAU,KAAK,UACf,KAAM,EAAI,KAEZ,KAAK,QACE,EAAI,EACb,GACF,CACA,YAAA,CAAa,EAAQ,EAAQ,EAAQ,GACnC,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAW,GAAG,EAAO,YAAY,EAAO,MAAQ,MAAM,KAAU,IAChE,EAAa,KAAK,MAAM,IAAI,GAClC,GAAI,EAAY,CACd,EAAW,SAAW,KAAK,UAE3B,OADa,EAAW,IAE1B,CACA,MAAM,QAAkB,GACtB,EACA,KAAK,WACL,EACA,EACA,GAOF,OALA,KAAK,MAAM,IAAI,EAAU,CACvB,SAAU,KAAK,UACf,KAAM,IAER,KAAK,QACE,CACT,GACF,CAEA,cAAA,CAAe,EAAQ,EAAQ,EAAQ,GACrC,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAW,GAAG,EAAO,YAAY,EAAO,MAAQ,MAAM,KAAU,IAChE,EAAa,KAAK,MAAM,IAAI,GAClC,GAAI,EAAY,CACd,EAAW,SAAW,KAAK,UAE3B,aADmB,EAAW,IAEhC,CACA,MAAM,QAAa,EAAO,SAAS,EAAQ,OAAQ,EAAQ,EAAO,MAMlE,OALA,KAAK,MAAM,IAAI,EAAU,CACvB,SAAU,KAAK,UACf,KAAM,EAAK,OAEb,KAAK,QACE,EAAK,IACd,GACF,CACA,KAAA,GACE,GAAI,KAAK,MAAM,KAAO,KAAK,gBAAiB,CAC1C,IACI,EADA,EAAU,IAEd,KAAK,MAAM,SAAQ,CAAC,EAAY,KAC1B,EAAW,SAAW,IACxB,EAAU,EAAW,SACrB,EAAS,EACX,IAEE,GACF,KAAK,MAAM,OAAO,EAEtB,CACF,CACA,UAAA,CAAW,GACT,OAAO,EAAQ,KAAM,MAAM,YACzB,KAAK,MAAM,OAAO,EAAO,SAC3B,GACF,GAEE,GAAqB,MACvB,WAAA,CAAY,EAAkB,IAAK,GAAW,EAAM,EAAa,IAC/D,KAAK,MAAwB,IAAI,IACjC,KAAK,cAAgC,IAAI,IACzC,KAAK,gBAAkB,EACvB,KAAK,QAAU,EACf,KAAK,WAAa,CACpB,CACA,SAAA,CAAU,GACR,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAW,EAAO,SAClB,EAAa,KAAK,MAAM,IAAI,GAClC,GAAI,EAAY,CACd,EAAW,SAAW,KAAK,UAE3B,aADmB,EAAW,IAEhC,CACA,MAAM,EAAI,IAAI,SAAQ,CAAC,EAAS,KAC9B,GAAiB,EAAQ,KAAK,YAAY,MAAM,IAC1C,EAAI,IACN,KAAK,MAAM,IAAI,EAAI,GAAG,GAAI,CACxB,SAAU,KAAK,UACf,KAAM,QAAQ,QAAQ,EAAI,GAAG,MAGjC,EAAQ,EAAI,IACZ,KAAK,OAAO,IACX,OAAO,IACR,EAAO,EAAE,GACT,IAGJ,OADA,KAAK,MAAM,IAAI,EAAU,CAAE,SAAU,KAAK,UAAW,KAAM,IACpD,CACT,GACF,CACA,YAAA,CAAa,EAAQ,EAAQ,EAAQ,GACnC,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAW,GAAG,EAAO,YAAY,EAAO,MAAQ,MAAM,KAAU,IAChE,EAAa,KAAK,MAAM,IAAI,GAClC,GAAI,EAAY,CACd,EAAW,SAAW,KAAK,UAE3B,aADmB,EAAW,IAEhC,CACA,MAAM,EAAI,IAAI,SAAQ,CAAC,EAAS,KAC9B,GAAa,EAAQ,KAAK,WAAY,EAAQ,EAAQ,GAAQ,MAAM,IAClE,EAAQ,GACR,KAAK,OAAO,IACX,OAAO,IACR,EAAO,EAAE,GACT,IAGJ,OADA,KAAK,MAAM,IAAI,EAAU,CAAE,SAAU,KAAK,UAAW,KAAM,IACpD,CACT,GACF,CAEA,cAAA,CAAe,EAAQ,EAAQ,EAAQ,GACrC,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAW,GAAG,EAAO,YAAY,EAAO,MAAQ,MAAM,KAAU,IAChE,EAAa,KAAK,MAAM,IAAI,GAClC,GAAI,EAAY,CACd,EAAW,SAAW,KAAK,UAE3B,aADmB,EAAW,IAEhC,CACA,MAAM,EAAI,IAAI,SAAQ,CAAC,EAAS,KAC9B,EAAO,SAAS,EAAQ,OAAQ,EAAQ,EAAO,MAAM,MAAM,IACzD,EAAQ,EAAK,MACT,KAAK,MAAM,IAAI,GAEnB,KAAK,OAAO,IACX,OAAO,IACR,EAAO,EAAE,GACT,IAGJ,OADA,KAAK,MAAM,IAAI,EAAU,CAAE,SAAU,KAAK,UAAW,KAAM,IACpD,CACT,GACF,CACA,KAAA,GACE,GAAI,KAAK,MAAM,MAAQ,KAAK,gBAAiB,CAC3C,IACI,EADA,EAAU,IAEd,KAAK,MAAM,SAAQ,CAAC,EAAY,KAC1B,EAAW,SAAW,IACxB,EAAU,EAAW,SACrB,EAAS,EACX,IAEE,GACF,KAAK,MAAM,OAAO,EAEtB,CACF,CACA,UAAA,CAAW,GACT,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAM,EAAO,SACnB,GAAI,KAAK,cAAc,IAAI,GACzB,aAAa,KAAK,cAAc,IAAI,GAEtC,KAAK,MAAM,OAAO,EAAO,UACzB,MAAM,EAAI,IAAI,SAAQ,CAAC,EAAS,KAC9B,KAAK,UAAU,GAAQ,MAAM,IAC3B,IACA,KAAK,cAAc,OAAO,EAAI,IAC7B,OAAO,IACR,EAAO,EAAE,GACT,IAEJ,KAAK,cAAc,IAAI,EAAK,EAC9B,GACF,GAEE,GAAU,MACZ,WAAA,CAAY,EAAQ,EAAO,GAEvB,KAAK,OADe,iBAAX,EACK,IAAI,GAAY,GAEhB,EAGd,KAAK,WADH,GAGgB,GAGlB,KAAK,MADH,GAGW,IAAI,EAErB,CACA,SAAA,GACE,OAAO,EAAQ,KAAM,MAAM,YACzB,aAAa,KAAK,MAAM,UAAU,KAAK,OACzC,GACF,CACA,aAAA,CAAc,EAAG,EAAG,EAAG,GACrB,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,EAAS,GAAY,EAAG,EAAG,GAC3B,QAAe,KAAK,MAAM,UAAU,KAAK,QAC/C,GAAI,EAAO,YAAc,EACvB,OAAO,EAAW,OAAO,EAAQ,KAAK,OAAQ,KAAK,MAAO,EAAG,EAAG,EAAG,GAErE,GAAI,EAAI,EAAO,SAAW,EAAI,EAAO,QACnC,OAEF,IAAI,EAAK,EAAO,oBACZ,EAAK,EAAO,oBAChB,IAAK,IAAI,EAAQ,EAAG,GAAS,EAAG,IAAS,CACvC,MAMM,EAAQ,SANU,KAAK,MAAM,aACjC,KAAK,OACL,EACA,EACA,GAEgC,GAClC,IAAI,EAiBF,OAhBA,GAAI,EAAM,UAAY,EAAG,CACvB,MAAM,QAAa,KAAK,OAAO,SAC7B,EAAO,eAAiB,EAAM,OAC9B,EAAM,OACN,EACA,EAAO,MAET,MAAO,CACL,WAAY,KAAK,WAAW,EAAK,KAAM,EAAO,iBAC9C,aAAc,EAAK,aACnB,QAAS,EAAK,QAElB,CACA,EAAK,EAAO,oBAAsB,EAAM,OACxC,EAAK,EAAM,MAIf,CACA,MAAM,MAAM,mCACd,GACF,CACA,MAAA,CAAO,EAAG,EAAG,EAAG,GACd,OAAO,EAAQ,KAAM,MAAM,YACzB,IACE,aAAa,KAAK,cAAc,EAAG,EAAG,EAAG,EAC3C,CAAE,MAAO,GACP,GAAI,aAAa,GAEf,OADA,KAAK,MAAM,WAAW,KAAK,cACd,KAAK,cAAc,EAAG,EAAG,EAAG,GAE3C,MAAM,CACR,CACF,GACF,CACA,kBAAA,GACE,OAAO,EAAQ,KAAM,MAAM,YACzB,MAAM,QAAe,KAAK,MAAM,UAAU,KAAK,QACzC,QAAa,KAAK,OAAO,SAC7B,EAAO,mBACP,EAAO,wBACP,EACA,EAAO,MAEH,QAAqB,KAAK,WAC9B,EAAK,KACL,EAAO,qBAEH,EAAM,IAAI,YAAY,SAC5B,OAAO,KAAK,MAAM,EAAI,OAAO,GAC/B,GACF,CACA,WAAA,GACE,OAAO,EAAQ,KAAM,MAAM,YACzB,IACE,aAAa,KAAK,oBACpB,CAAE,MAAO,GACP,GAAI,aAAa,GAEf,OADA,KAAK,MAAM,WAAW,KAAK,cACd,KAAK,qBAEpB,MAAM,CACR,CACF,GACF,GAEF,OArlDoB,GAqlDA,EA7lDF,EAAC,EAAI,EAAM,EAAQ,KACnC,GAAI,GAAwB,iBAAT,GAAqC,mBAAT,EAC7C,IAAK,IAAI,KAAO,EAAkB,GAC3B,EAAa,KAAK,EAAI,IAAQ,IAAQ,GACzC,EAAU,EAAI,EAAK,CAAE,IAAK,IAAM,EAAK,GAAM,aAAc,EAAO,EAAiB,EAAM,KAAS,EAAK,aAE3G,OAAO,CAAE,EAEiB,CAAY,EAAU,CAAC,EAAG,aAAc,CAAE,OAAO,IAAS,GAslDvF,EAxmDa","file":"/npm/pmtiles@3.0.3/dist/pmtiles.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/pmtiles@3.0.3/dist/pmtiles.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar pmtiles = (() => {\n  var __defProp = Object.defineProperty;\n  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n  var __getOwnPropNames = Object.getOwnPropertyNames;\n  var __hasOwnProp = Object.prototype.hasOwnProperty;\n  var __pow = Math.pow;\n  var __export = (target, all) => {\n    for (var name in all)\n      __defProp(target, name, { get: all[name], enumerable: true });\n  };\n  var __copyProps = (to, from, except, desc) => {\n    if (from && typeof from === \"object\" || typeof from === \"function\") {\n      for (let key of __getOwnPropNames(from))\n        if (!__hasOwnProp.call(to, key) && key !== except)\n          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n    }\n    return to;\n  };\n  var __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n  var __async = (__this, __arguments, generator) => {\n    return new Promise((resolve, reject) => {\n      var fulfilled = (value) => {\n        try {\n          step(generator.next(value));\n        } catch (e) {\n          reject(e);\n        }\n      };\n      var rejected = (value) => {\n        try {\n          step(generator.throw(value));\n        } catch (e) {\n          reject(e);\n        }\n      };\n      var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n      step((generator = generator.apply(__this, __arguments)).next());\n    });\n  };\n\n  // index.ts\n  var js_exports = {};\n  __export(js_exports, {\n    Compression: () => Compression,\n    EtagMismatch: () => EtagMismatch,\n    FetchSource: () => FetchSource,\n    FileSource: () => FileSource,\n    PMTiles: () => PMTiles,\n    Protocol: () => Protocol,\n    ResolvedValueCache: () => ResolvedValueCache,\n    SharedPromiseCache: () => SharedPromiseCache,\n    TileType: () => TileType,\n    bytesToHeader: () => bytesToHeader,\n    findTile: () => findTile,\n    getUint64: () => getUint64,\n    leafletRasterLayer: () => leafletRasterLayer,\n    readVarint: () => readVarint,\n    tileIdToZxy: () => tileIdToZxy,\n    zxyToTileId: () => zxyToTileId\n  });\n\n  // node_modules/fflate/esm/browser.js\n  var u8 = Uint8Array;\n  var u16 = Uint16Array;\n  var i32 = Int32Array;\n  var fleb = new u8([\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    1,\n    1,\n    1,\n    1,\n    2,\n    2,\n    2,\n    2,\n    3,\n    3,\n    3,\n    3,\n    4,\n    4,\n    4,\n    4,\n    5,\n    5,\n    5,\n    5,\n    0,\n    /* unused */\n    0,\n    0,\n    /* impossible */\n    0\n  ]);\n  var fdeb = new u8([\n    0,\n    0,\n    0,\n    0,\n    1,\n    1,\n    2,\n    2,\n    3,\n    3,\n    4,\n    4,\n    5,\n    5,\n    6,\n    6,\n    7,\n    7,\n    8,\n    8,\n    9,\n    9,\n    10,\n    10,\n    11,\n    11,\n    12,\n    12,\n    13,\n    13,\n    /* unused */\n    0,\n    0\n  ]);\n  var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n  var freb = function(eb, start) {\n    var b = new u16(31);\n    for (var i = 0; i < 31; ++i) {\n      b[i] = start += 1 << eb[i - 1];\n    }\n    var r = new i32(b[30]);\n    for (var i = 1; i < 30; ++i) {\n      for (var j = b[i]; j < b[i + 1]; ++j) {\n        r[j] = j - b[i] << 5 | i;\n      }\n    }\n    return { b, r };\n  };\n  var _a = freb(fleb, 2);\n  var fl = _a.b;\n  var revfl = _a.r;\n  fl[28] = 258, revfl[258] = 28;\n  var _b = freb(fdeb, 0);\n  var fd = _b.b;\n  var revfd = _b.r;\n  var rev = new u16(32768);\n  for (i = 0; i < 32768; ++i) {\n    x = (i & 43690) >> 1 | (i & 21845) << 1;\n    x = (x & 52428) >> 2 | (x & 13107) << 2;\n    x = (x & 61680) >> 4 | (x & 3855) << 4;\n    rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;\n  }\n  var x;\n  var i;\n  var hMap = function(cd, mb, r) {\n    var s = cd.length;\n    var i = 0;\n    var l = new u16(mb);\n    for (; i < s; ++i) {\n      if (cd[i])\n        ++l[cd[i] - 1];\n    }\n    var le = new u16(mb);\n    for (i = 1; i < mb; ++i) {\n      le[i] = le[i - 1] + l[i - 1] << 1;\n    }\n    var co;\n    if (r) {\n      co = new u16(1 << mb);\n      var rvb = 15 - mb;\n      for (i = 0; i < s; ++i) {\n        if (cd[i]) {\n          var sv = i << 4 | cd[i];\n          var r_1 = mb - cd[i];\n          var v = le[cd[i] - 1]++ << r_1;\n          for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n            co[rev[v] >> rvb] = sv;\n          }\n        }\n      }\n    } else {\n      co = new u16(s);\n      for (i = 0; i < s; ++i) {\n        if (cd[i]) {\n          co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i];\n        }\n      }\n    }\n    return co;\n  };\n  var flt = new u8(288);\n  for (i = 0; i < 144; ++i)\n    flt[i] = 8;\n  var i;\n  for (i = 144; i < 256; ++i)\n    flt[i] = 9;\n  var i;\n  for (i = 256; i < 280; ++i)\n    flt[i] = 7;\n  var i;\n  for (i = 280; i < 288; ++i)\n    flt[i] = 8;\n  var i;\n  var fdt = new u8(32);\n  for (i = 0; i < 32; ++i)\n    fdt[i] = 5;\n  var i;\n  var flrm = /* @__PURE__ */ hMap(flt, 9, 1);\n  var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);\n  var max = function(a) {\n    var m = a[0];\n    for (var i = 1; i < a.length; ++i) {\n      if (a[i] > m)\n        m = a[i];\n    }\n    return m;\n  };\n  var bits = function(d, p, m) {\n    var o = p / 8 | 0;\n    return (d[o] | d[o + 1] << 8) >> (p & 7) & m;\n  };\n  var bits16 = function(d, p) {\n    var o = p / 8 | 0;\n    return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);\n  };\n  var shft = function(p) {\n    return (p + 7) / 8 | 0;\n  };\n  var slc = function(v, s, e) {\n    if (s == null || s < 0)\n      s = 0;\n    if (e == null || e > v.length)\n      e = v.length;\n    var n = new u8(e - s);\n    n.set(v.subarray(s, e));\n    return n;\n  };\n  var ec = [\n    \"unexpected EOF\",\n    \"invalid block type\",\n    \"invalid length/literal\",\n    \"invalid distance\",\n    \"stream finished\",\n    \"no stream handler\",\n    ,\n    \"no callback\",\n    \"invalid UTF-8 data\",\n    \"extra field too long\",\n    \"date not in range 1980-2099\",\n    \"filename too long\",\n    \"stream finishing\",\n    \"invalid zip data\"\n    // determined by unknown compression method\n  ];\n  var err = function(ind, msg, nt) {\n    var e = new Error(msg || ec[ind]);\n    e.code = ind;\n    if (Error.captureStackTrace)\n      Error.captureStackTrace(e, err);\n    if (!nt)\n      throw e;\n    return e;\n  };\n  var inflt = function(dat, st, buf, dict) {\n    var sl = dat.length, dl = dict ? dict.length : 0;\n    if (!sl || st.f && !st.l)\n      return buf || new u8(0);\n    var noBuf = !buf || st.i != 2;\n    var noSt = st.i;\n    if (!buf)\n      buf = new u8(sl * 3);\n    var cbuf = function(l2) {\n      var bl = buf.length;\n      if (l2 > bl) {\n        var nbuf = new u8(Math.max(bl * 2, l2));\n        nbuf.set(buf);\n        buf = nbuf;\n      }\n    };\n    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n    var tbts = sl * 8;\n    do {\n      if (!lm) {\n        final = bits(dat, pos, 1);\n        var type = bits(dat, pos + 1, 3);\n        pos += 3;\n        if (!type) {\n          var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;\n          if (t > sl) {\n            if (noSt)\n              err(0);\n            break;\n          }\n          if (noBuf)\n            cbuf(bt + l);\n          buf.set(dat.subarray(s, t), bt);\n          st.b = bt += l, st.p = pos = t * 8, st.f = final;\n          continue;\n        } else if (type == 1)\n          lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n        else if (type == 2) {\n          var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n          var tl = hLit + bits(dat, pos + 5, 31) + 1;\n          pos += 14;\n          var ldt = new u8(tl);\n          var clt = new u8(19);\n          for (var i = 0; i < hcLen; ++i) {\n            clt[clim[i]] = bits(dat, pos + i * 3, 7);\n          }\n          pos += hcLen * 3;\n          var clb = max(clt), clbmsk = (1 << clb) - 1;\n          var clm = hMap(clt, clb, 1);\n          for (var i = 0; i < tl; ) {\n            var r = clm[bits(dat, pos, clbmsk)];\n            pos += r & 15;\n            var s = r >> 4;\n            if (s < 16) {\n              ldt[i++] = s;\n            } else {\n              var c = 0, n = 0;\n              if (s == 16)\n                n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n              else if (s == 17)\n                n = 3 + bits(dat, pos, 7), pos += 3;\n              else if (s == 18)\n                n = 11 + bits(dat, pos, 127), pos += 7;\n              while (n--)\n                ldt[i++] = c;\n            }\n          }\n          var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n          lbt = max(lt);\n          dbt = max(dt);\n          lm = hMap(lt, lbt, 1);\n          dm = hMap(dt, dbt, 1);\n        } else\n          err(1);\n        if (pos > tbts) {\n          if (noSt)\n            err(0);\n          break;\n        }\n      }\n      if (noBuf)\n        cbuf(bt + 131072);\n      var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n      var lpos = pos;\n      for (; ; lpos = pos) {\n        var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n        pos += c & 15;\n        if (pos > tbts) {\n          if (noSt)\n            err(0);\n          break;\n        }\n        if (!c)\n          err(2);\n        if (sym < 256)\n          buf[bt++] = sym;\n        else if (sym == 256) {\n          lpos = pos, lm = null;\n          break;\n        } else {\n          var add = sym - 254;\n          if (sym > 264) {\n            var i = sym - 257, b = fleb[i];\n            add = bits(dat, pos, (1 << b) - 1) + fl[i];\n            pos += b;\n          }\n          var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n          if (!d)\n            err(3);\n          pos += d & 15;\n          var dt = fd[dsym];\n          if (dsym > 3) {\n            var b = fdeb[dsym];\n            dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n          }\n          if (pos > tbts) {\n            if (noSt)\n              err(0);\n            break;\n          }\n          if (noBuf)\n            cbuf(bt + 131072);\n          var end = bt + add;\n          if (bt < dt) {\n            var shift2 = dl - dt, dend = Math.min(dt, end);\n            if (shift2 + bt < 0)\n              err(3);\n            for (; bt < dend; ++bt)\n              buf[bt] = dict[shift2 + bt];\n          }\n          for (; bt < end; bt += 4) {\n            buf[bt] = buf[bt - dt];\n            buf[bt + 1] = buf[bt + 1 - dt];\n            buf[bt + 2] = buf[bt + 2 - dt];\n            buf[bt + 3] = buf[bt + 3 - dt];\n          }\n          bt = end;\n        }\n      }\n      st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n      if (lm)\n        final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n    } while (!final);\n    return bt == buf.length ? buf : slc(buf, 0, bt);\n  };\n  var et = /* @__PURE__ */ new u8(0);\n  var gzs = function(d) {\n    if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n      err(6, \"invalid gzip data\");\n    var flg = d[3];\n    var st = 10;\n    if (flg & 4)\n      st += (d[10] | d[11] << 8) + 2;\n    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n      ;\n    return st + (flg & 2);\n  };\n  var gzl = function(d) {\n    var l = d.length;\n    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n  };\n  var zls = function(d, dict) {\n    if ((d[0] & 15) != 8 || d[0] >> 4 > 7 || (d[0] << 8 | d[1]) % 31)\n      err(6, \"invalid zlib data\");\n    if ((d[1] >> 5 & 1) == +!dict)\n      err(6, \"invalid zlib data: \" + (d[1] & 32 ? \"need\" : \"unexpected\") + \" dictionary\");\n    return (d[1] >> 3 & 4) + 2;\n  };\n  function inflateSync(data, opts) {\n    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n  }\n  function gunzipSync(data, opts) {\n    var st = gzs(data);\n    if (st + 8 > data.length)\n      err(6, \"invalid gzip data\");\n    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n  }\n  function unzlibSync(data, opts) {\n    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n  }\n  function decompressSync(data, opts) {\n    return data[0] == 31 && data[1] == 139 && data[2] == 8 ? gunzipSync(data, opts) : (data[0] & 15) != 8 || data[0] >> 4 > 7 || (data[0] << 8 | data[1]) % 31 ? inflateSync(data, opts) : unzlibSync(data, opts);\n  }\n  var td = typeof TextDecoder != \"undefined\" && /* @__PURE__ */ new TextDecoder();\n  var tds = 0;\n  try {\n    td.decode(et, { stream: true });\n    tds = 1;\n  } catch (e) {\n  }\n\n  // v2.ts\n  var shift = (n, shift2) => {\n    return n * __pow(2, shift2);\n  };\n  var unshift = (n, shift2) => {\n    return Math.floor(n / __pow(2, shift2));\n  };\n  var getUint24 = (view, pos) => {\n    return shift(view.getUint16(pos + 1, true), 8) + view.getUint8(pos);\n  };\n  var getUint48 = (view, pos) => {\n    return shift(view.getUint32(pos + 2, true), 16) + view.getUint16(pos, true);\n  };\n  var compare = (tz, tx, ty, view, i) => {\n    if (tz !== view.getUint8(i))\n      return tz - view.getUint8(i);\n    const x = getUint24(view, i + 1);\n    if (tx !== x)\n      return tx - x;\n    const y = getUint24(view, i + 4);\n    if (ty !== y)\n      return ty - y;\n    return 0;\n  };\n  var queryLeafdir = (view, z, x, y) => {\n    const offsetLen = queryView(view, z | 128, x, y);\n    if (offsetLen) {\n      return {\n        z,\n        x,\n        y,\n        offset: offsetLen[0],\n        length: offsetLen[1],\n        isDir: true\n      };\n    }\n    return null;\n  };\n  var queryTile = (view, z, x, y) => {\n    const offsetLen = queryView(view, z, x, y);\n    if (offsetLen) {\n      return {\n        z,\n        x,\n        y,\n        offset: offsetLen[0],\n        length: offsetLen[1],\n        isDir: false\n      };\n    }\n    return null;\n  };\n  var queryView = (view, z, x, y) => {\n    let m = 0;\n    let n = view.byteLength / 17 - 1;\n    while (m <= n) {\n      const k = n + m >> 1;\n      const cmp = compare(z, x, y, view, k * 17);\n      if (cmp > 0) {\n        m = k + 1;\n      } else if (cmp < 0) {\n        n = k - 1;\n      } else {\n        return [getUint48(view, k * 17 + 7), view.getUint32(k * 17 + 13, true)];\n      }\n    }\n    return null;\n  };\n  var entrySort = (a, b) => {\n    if (a.isDir && !b.isDir) {\n      return 1;\n    }\n    if (!a.isDir && b.isDir) {\n      return -1;\n    }\n    if (a.z !== b.z) {\n      return a.z - b.z;\n    }\n    if (a.x !== b.x) {\n      return a.x - b.x;\n    }\n    return a.y - b.y;\n  };\n  var parseEntry = (dataview, i) => {\n    const zRaw = dataview.getUint8(i * 17);\n    const z = zRaw & 127;\n    return {\n      z,\n      x: getUint24(dataview, i * 17 + 1),\n      y: getUint24(dataview, i * 17 + 4),\n      offset: getUint48(dataview, i * 17 + 7),\n      length: dataview.getUint32(i * 17 + 13, true),\n      isDir: zRaw >> 7 === 1\n    };\n  };\n  var sortDir = (a) => {\n    const entries = [];\n    const view = new DataView(a);\n    for (let i = 0; i < view.byteLength / 17; i++) {\n      entries.push(parseEntry(view, i));\n    }\n    return createDirectory(entries);\n  };\n  var createDirectory = (entries) => {\n    entries.sort(entrySort);\n    const buffer = new ArrayBuffer(17 * entries.length);\n    const arr = new Uint8Array(buffer);\n    for (let i = 0; i < entries.length; i++) {\n      const entry = entries[i];\n      let z = entry.z;\n      if (entry.isDir)\n        z = z | 128;\n      arr[i * 17] = z;\n      arr[i * 17 + 1] = entry.x & 255;\n      arr[i * 17 + 2] = entry.x >> 8 & 255;\n      arr[i * 17 + 3] = entry.x >> 16 & 255;\n      arr[i * 17 + 4] = entry.y & 255;\n      arr[i * 17 + 5] = entry.y >> 8 & 255;\n      arr[i * 17 + 6] = entry.y >> 16 & 255;\n      arr[i * 17 + 7] = entry.offset & 255;\n      arr[i * 17 + 8] = unshift(entry.offset, 8) & 255;\n      arr[i * 17 + 9] = unshift(entry.offset, 16) & 255;\n      arr[i * 17 + 10] = unshift(entry.offset, 24) & 255;\n      arr[i * 17 + 11] = unshift(entry.offset, 32) & 255;\n      arr[i * 17 + 12] = unshift(entry.offset, 48) & 255;\n      arr[i * 17 + 13] = entry.length & 255;\n      arr[i * 17 + 14] = entry.length >> 8 & 255;\n      arr[i * 17 + 15] = entry.length >> 16 & 255;\n      arr[i * 17 + 16] = entry.length >> 24 & 255;\n    }\n    return buffer;\n  };\n  var deriveLeaf = (view, tile) => {\n    if (view.byteLength < 17)\n      return null;\n    const numEntries = view.byteLength / 17;\n    const entry = parseEntry(view, numEntries - 1);\n    if (entry.isDir) {\n      const leafLevel = entry.z;\n      const levelDiff = tile.z - leafLevel;\n      const leafX = Math.trunc(tile.x / (1 << levelDiff));\n      const leafY = Math.trunc(tile.y / (1 << levelDiff));\n      return { z: leafLevel, x: leafX, y: leafY };\n    }\n    return null;\n  };\n  function getHeader(source) {\n    return __async(this, null, function* () {\n      const resp = yield source.getBytes(0, 512e3);\n      const dataview = new DataView(resp.data);\n      const jsonSize = dataview.getUint32(4, true);\n      const rootEntries = dataview.getUint16(8, true);\n      const dec = new TextDecoder(\"utf-8\");\n      const jsonMetadata = JSON.parse(\n        dec.decode(new DataView(resp.data, 10, jsonSize))\n      );\n      let tileCompression = 0 /* Unknown */;\n      if (jsonMetadata.compression === \"gzip\") {\n        tileCompression = 2 /* Gzip */;\n      }\n      let minzoom = 0;\n      if (\"minzoom\" in jsonMetadata) {\n        minzoom = +jsonMetadata.minzoom;\n      }\n      let maxzoom = 0;\n      if (\"maxzoom\" in jsonMetadata) {\n        maxzoom = +jsonMetadata.maxzoom;\n      }\n      let centerLon = 0;\n      let centerLat = 0;\n      let centerZoom = 0;\n      let minLon = -180;\n      let minLat = -85;\n      let maxLon = 180;\n      let maxLat = 85;\n      if (jsonMetadata.bounds) {\n        const split = jsonMetadata.bounds.split(\",\");\n        minLon = +split[0];\n        minLat = +split[1];\n        maxLon = +split[2];\n        maxLat = +split[3];\n      }\n      if (jsonMetadata.center) {\n        const split = jsonMetadata.center.split(\",\");\n        centerLon = +split[0];\n        centerLat = +split[1];\n        centerZoom = +split[2];\n      }\n      const header = {\n        specVersion: dataview.getUint16(2, true),\n        rootDirectoryOffset: 10 + jsonSize,\n        rootDirectoryLength: rootEntries * 17,\n        jsonMetadataOffset: 10,\n        jsonMetadataLength: jsonSize,\n        leafDirectoryOffset: 0,\n        leafDirectoryLength: void 0,\n        tileDataOffset: 0,\n        tileDataLength: void 0,\n        numAddressedTiles: 0,\n        numTileEntries: 0,\n        numTileContents: 0,\n        clustered: false,\n        internalCompression: 1 /* None */,\n        tileCompression,\n        tileType: 1 /* Mvt */,\n        minZoom: minzoom,\n        maxZoom: maxzoom,\n        minLon,\n        minLat,\n        maxLon,\n        maxLat,\n        centerZoom,\n        centerLon,\n        centerLat,\n        etag: resp.etag\n      };\n      return header;\n    });\n  }\n  function getZxy(header, source, cache, z, x, y, signal) {\n    return __async(this, null, function* () {\n      let rootDir = yield cache.getArrayBuffer(\n        source,\n        header.rootDirectoryOffset,\n        header.rootDirectoryLength,\n        header\n      );\n      if (header.specVersion === 1) {\n        rootDir = sortDir(rootDir);\n      }\n      const entry = queryTile(new DataView(rootDir), z, x, y);\n      if (entry) {\n        const resp = yield source.getBytes(entry.offset, entry.length, signal);\n        let tileData = resp.data;\n        const view = new DataView(tileData);\n        if (view.getUint8(0) === 31 && view.getUint8(1) === 139) {\n          tileData = decompressSync(new Uint8Array(tileData));\n        }\n        return {\n          data: tileData\n        };\n      }\n      const leafcoords = deriveLeaf(new DataView(rootDir), { z, x, y });\n      if (leafcoords) {\n        const leafdirEntry = queryLeafdir(\n          new DataView(rootDir),\n          leafcoords.z,\n          leafcoords.x,\n          leafcoords.y\n        );\n        if (leafdirEntry) {\n          let leafDir = yield cache.getArrayBuffer(\n            source,\n            leafdirEntry.offset,\n            leafdirEntry.length,\n            header\n          );\n          if (header.specVersion === 1) {\n            leafDir = sortDir(leafDir);\n          }\n          const tileEntry = queryTile(new DataView(leafDir), z, x, y);\n          if (tileEntry) {\n            const resp = yield source.getBytes(\n              tileEntry.offset,\n              tileEntry.length,\n              signal\n            );\n            let tileData = resp.data;\n            const view = new DataView(tileData);\n            if (view.getUint8(0) === 31 && view.getUint8(1) === 139) {\n              tileData = decompressSync(new Uint8Array(tileData));\n            }\n            return {\n              data: tileData\n            };\n          }\n        }\n      }\n      return void 0;\n    });\n  }\n  var v2_default = {\n    getHeader,\n    getZxy\n  };\n\n  // adapters.ts\n  var leafletRasterLayer = (source, options) => {\n    let loaded = false;\n    let mimeType = \"\";\n    const cls = L.GridLayer.extend({\n      createTile: (coord, done) => {\n        const el = document.createElement(\"img\");\n        const controller = new AbortController();\n        const signal = controller.signal;\n        el.cancel = () => {\n          controller.abort();\n        };\n        if (!loaded) {\n          source.getHeader().then((header) => {\n            if (header.tileType === 1 /* Mvt */) {\n              console.error(\n                \"Error: archive contains MVT vector tiles, but leafletRasterLayer is for displaying raster tiles. See https://github.com/protomaps/PMTiles/tree/main/js for details.\"\n              );\n            } else if (header.tileType === 2) {\n              mimeType = \"image/png\";\n            } else if (header.tileType === 3) {\n              mimeType = \"image/jpeg\";\n            } else if (header.tileType === 4) {\n              mimeType = \"image/webp\";\n            } else if (header.tileType === 5) {\n              mimeType = \"image/avif\";\n            }\n          });\n          loaded = true;\n        }\n        source.getZxy(coord.z, coord.x, coord.y, signal).then((arr) => {\n          if (arr) {\n            const blob = new Blob([arr.data], { type: mimeType });\n            const imageUrl = window.URL.createObjectURL(blob);\n            el.src = imageUrl;\n            el.cancel = void 0;\n            done(void 0, el);\n          }\n        }).catch((e) => {\n          if (e.name !== \"AbortError\") {\n            throw e;\n          }\n        });\n        return el;\n      },\n      _removeTile: function(key) {\n        const tile = this._tiles[key];\n        if (!tile) {\n          return;\n        }\n        if (tile.el.cancel)\n          tile.el.cancel();\n        tile.el.width = 0;\n        tile.el.height = 0;\n        tile.el.deleted = true;\n        L.DomUtil.remove(tile.el);\n        delete this._tiles[key];\n        this.fire(\"tileunload\", {\n          tile: tile.el,\n          coords: this._keyToTileCoords(key)\n        });\n      }\n    });\n    return new cls(options);\n  };\n  var v3compat = (v4) => (requestParameters, arg2) => {\n    if (arg2 instanceof AbortController) {\n      return v4(requestParameters, arg2);\n    }\n    const abortController = new AbortController();\n    v4(requestParameters, abortController).then(\n      (result) => {\n        return arg2(\n          void 0,\n          result.data,\n          result.cacheControl || \"\",\n          result.expires || \"\"\n        );\n      },\n      (err2) => {\n        return arg2(err2);\n      }\n    ).catch((e) => {\n      return arg2(e);\n    });\n    return { cancel: () => abortController.abort() };\n  };\n  var Protocol = class {\n    constructor() {\n      this.tilev4 = (params, abortController) => __async(this, null, function* () {\n        if (params.type === \"json\") {\n          const pmtilesUrl2 = params.url.substr(10);\n          let instance2 = this.tiles.get(pmtilesUrl2);\n          if (!instance2) {\n            instance2 = new PMTiles(pmtilesUrl2);\n            this.tiles.set(pmtilesUrl2, instance2);\n          }\n          const h = yield instance2.getHeader();\n          return {\n            data: {\n              tiles: [`${params.url}/{z}/{x}/{y}`],\n              minzoom: h.minZoom,\n              maxzoom: h.maxZoom,\n              bounds: [h.minLon, h.minLat, h.maxLon, h.maxLat]\n            }\n          };\n        }\n        const re = new RegExp(/pmtiles:\\/\\/(.+)\\/(\\d+)\\/(\\d+)\\/(\\d+)/);\n        const result = params.url.match(re);\n        if (!result) {\n          throw new Error(\"Invalid PMTiles protocol URL\");\n        }\n        const pmtilesUrl = result[1];\n        let instance = this.tiles.get(pmtilesUrl);\n        if (!instance) {\n          instance = new PMTiles(pmtilesUrl);\n          this.tiles.set(pmtilesUrl, instance);\n        }\n        const z = result[2];\n        const x = result[3];\n        const y = result[4];\n        const header = yield instance.getHeader();\n        const resp = yield instance == null ? void 0 : instance.getZxy(+z, +x, +y, abortController.signal);\n        if (resp) {\n          return {\n            data: new Uint8Array(resp.data),\n            cacheControl: resp.cacheControl,\n            expires: resp.expires\n          };\n        }\n        if (header.tileType === 1 /* Mvt */) {\n          return { data: new Uint8Array() };\n        }\n        return { data: null };\n      });\n      this.tile = v3compat(this.tilev4);\n      this.tiles = /* @__PURE__ */ new Map();\n    }\n    add(p) {\n      this.tiles.set(p.source.getKey(), p);\n    }\n    get(url) {\n      return this.tiles.get(url);\n    }\n  };\n\n  // index.ts\n  function toNum(low, high) {\n    return (high >>> 0) * 4294967296 + (low >>> 0);\n  }\n  function readVarintRemainder(l, p) {\n    const buf = p.buf;\n    let b = buf[p.pos++];\n    let h = (b & 112) >> 4;\n    if (b < 128)\n      return toNum(l, h);\n    b = buf[p.pos++];\n    h |= (b & 127) << 3;\n    if (b < 128)\n      return toNum(l, h);\n    b = buf[p.pos++];\n    h |= (b & 127) << 10;\n    if (b < 128)\n      return toNum(l, h);\n    b = buf[p.pos++];\n    h |= (b & 127) << 17;\n    if (b < 128)\n      return toNum(l, h);\n    b = buf[p.pos++];\n    h |= (b & 127) << 24;\n    if (b < 128)\n      return toNum(l, h);\n    b = buf[p.pos++];\n    h |= (b & 1) << 31;\n    if (b < 128)\n      return toNum(l, h);\n    throw new Error(\"Expected varint not more than 10 bytes\");\n  }\n  function readVarint(p) {\n    const buf = p.buf;\n    let b = buf[p.pos++];\n    let val = b & 127;\n    if (b < 128)\n      return val;\n    b = buf[p.pos++];\n    val |= (b & 127) << 7;\n    if (b < 128)\n      return val;\n    b = buf[p.pos++];\n    val |= (b & 127) << 14;\n    if (b < 128)\n      return val;\n    b = buf[p.pos++];\n    val |= (b & 127) << 21;\n    if (b < 128)\n      return val;\n    b = buf[p.pos];\n    val |= (b & 15) << 28;\n    return readVarintRemainder(val, p);\n  }\n  function rotate(n, xy, rx, ry) {\n    if (ry === 0) {\n      if (rx === 1) {\n        xy[0] = n - 1 - xy[0];\n        xy[1] = n - 1 - xy[1];\n      }\n      const t = xy[0];\n      xy[0] = xy[1];\n      xy[1] = t;\n    }\n  }\n  function idOnLevel(z, pos) {\n    const n = __pow(2, z);\n    let rx = pos;\n    let ry = pos;\n    let t = pos;\n    const xy = [0, 0];\n    let s = 1;\n    while (s < n) {\n      rx = 1 & t / 2;\n      ry = 1 & (t ^ rx);\n      rotate(s, xy, rx, ry);\n      xy[0] += s * rx;\n      xy[1] += s * ry;\n      t = t / 4;\n      s *= 2;\n    }\n    return [z, xy[0], xy[1]];\n  }\n  var tzValues = [\n    0,\n    1,\n    5,\n    21,\n    85,\n    341,\n    1365,\n    5461,\n    21845,\n    87381,\n    349525,\n    1398101,\n    5592405,\n    22369621,\n    89478485,\n    357913941,\n    1431655765,\n    5726623061,\n    22906492245,\n    91625968981,\n    366503875925,\n    1466015503701,\n    5864062014805,\n    23456248059221,\n    93824992236885,\n    375299968947541,\n    1501199875790165\n  ];\n  function zxyToTileId(z, x, y) {\n    if (z > 26) {\n      throw Error(\"Tile zoom level exceeds max safe number limit (26)\");\n    }\n    if (x > __pow(2, z) - 1 || y > __pow(2, z) - 1) {\n      throw Error(\"tile x/y outside zoom level bounds\");\n    }\n    const acc = tzValues[z];\n    const n = __pow(2, z);\n    let rx = 0;\n    let ry = 0;\n    let d = 0;\n    const xy = [x, y];\n    let s = n / 2;\n    while (s > 0) {\n      rx = (xy[0] & s) > 0 ? 1 : 0;\n      ry = (xy[1] & s) > 0 ? 1 : 0;\n      d += s * s * (3 * rx ^ ry);\n      rotate(s, xy, rx, ry);\n      s = s / 2;\n    }\n    return acc + d;\n  }\n  function tileIdToZxy(i) {\n    let acc = 0;\n    const z = 0;\n    for (let z2 = 0; z2 < 27; z2++) {\n      const numTiles = (1 << z2) * (1 << z2);\n      if (acc + numTiles > i) {\n        return idOnLevel(z2, i - acc);\n      }\n      acc += numTiles;\n    }\n    throw Error(\"Tile zoom level exceeds max safe number limit (26)\");\n  }\n  var Compression = /* @__PURE__ */ ((Compression2) => {\n    Compression2[Compression2[\"Unknown\"] = 0] = \"Unknown\";\n    Compression2[Compression2[\"None\"] = 1] = \"None\";\n    Compression2[Compression2[\"Gzip\"] = 2] = \"Gzip\";\n    Compression2[Compression2[\"Brotli\"] = 3] = \"Brotli\";\n    Compression2[Compression2[\"Zstd\"] = 4] = \"Zstd\";\n    return Compression2;\n  })(Compression || {});\n  function defaultDecompress(buf, compression) {\n    return __async(this, null, function* () {\n      if (compression === 1 /* None */ || compression === 0 /* Unknown */) {\n        return buf;\n      }\n      if (compression === 2 /* Gzip */) {\n        if (typeof globalThis.DecompressionStream === \"undefined\") {\n          return decompressSync(new Uint8Array(buf));\n        }\n        const stream = new Response(buf).body;\n        if (!stream) {\n          throw Error(\"Failed to read response stream\");\n        }\n        const result = stream.pipeThrough(\n          // biome-ignore lint: needed to detect DecompressionStream in browser+node+cloudflare workers\n          new globalThis.DecompressionStream(\"gzip\")\n        );\n        return new Response(result).arrayBuffer();\n      }\n      throw Error(\"Compression method not supported\");\n    });\n  }\n  var TileType = /* @__PURE__ */ ((TileType2) => {\n    TileType2[TileType2[\"Unknown\"] = 0] = \"Unknown\";\n    TileType2[TileType2[\"Mvt\"] = 1] = \"Mvt\";\n    TileType2[TileType2[\"Png\"] = 2] = \"Png\";\n    TileType2[TileType2[\"Jpeg\"] = 3] = \"Jpeg\";\n    TileType2[TileType2[\"Webp\"] = 4] = \"Webp\";\n    TileType2[TileType2[\"Avif\"] = 5] = \"Avif\";\n    return TileType2;\n  })(TileType || {});\n  var HEADER_SIZE_BYTES = 127;\n  function findTile(entries, tileId) {\n    let m = 0;\n    let n = entries.length - 1;\n    while (m <= n) {\n      const k = n + m >> 1;\n      const cmp = tileId - entries[k].tileId;\n      if (cmp > 0) {\n        m = k + 1;\n      } else if (cmp < 0) {\n        n = k - 1;\n      } else {\n        return entries[k];\n      }\n    }\n    if (n >= 0) {\n      if (entries[n].runLength === 0) {\n        return entries[n];\n      }\n      if (tileId - entries[n].tileId < entries[n].runLength) {\n        return entries[n];\n      }\n    }\n    return null;\n  }\n  var FileSource = class {\n    constructor(file) {\n      this.file = file;\n    }\n    getKey() {\n      return this.file.name;\n    }\n    getBytes(offset, length) {\n      return __async(this, null, function* () {\n        const blob = this.file.slice(offset, offset + length);\n        const a = yield blob.arrayBuffer();\n        return { data: a };\n      });\n    }\n  };\n  var FetchSource = class {\n    constructor(url, customHeaders = new Headers()) {\n      this.url = url;\n      this.customHeaders = customHeaders;\n      this.mustReload = false;\n    }\n    getKey() {\n      return this.url;\n    }\n    setHeaders(customHeaders) {\n      this.customHeaders = customHeaders;\n    }\n    getBytes(offset, length, passedSignal, etag) {\n      return __async(this, null, function* () {\n        let controller;\n        let signal;\n        if (passedSignal) {\n          signal = passedSignal;\n        } else {\n          controller = new AbortController();\n          signal = controller.signal;\n        }\n        const requestHeaders = new Headers(this.customHeaders);\n        requestHeaders.set(\"range\", `bytes=${offset}-${offset + length - 1}`);\n        let cache;\n        if (this.mustReload) {\n          cache = \"reload\";\n        }\n        let resp = yield fetch(this.url, {\n          signal,\n          cache,\n          headers: requestHeaders\n          //biome-ignore lint: \"cache\" is incompatible between cloudflare workers and browser\n        });\n        if (offset === 0 && resp.status === 416) {\n          const contentRange = resp.headers.get(\"Content-Range\");\n          if (!contentRange || !contentRange.startsWith(\"bytes */\")) {\n            throw Error(\"Missing content-length on 416 response\");\n          }\n          const actualLength = +contentRange.substr(8);\n          resp = yield fetch(this.url, {\n            signal,\n            cache: \"reload\",\n            headers: { range: `bytes=0-${actualLength - 1}` }\n            //biome-ignore lint: \"cache\" is incompatible between cloudflare workers and browser\n          });\n        }\n        let newEtag = resp.headers.get(\"Etag\");\n        if (newEtag == null ? void 0 : newEtag.startsWith(\"W/\")) {\n          newEtag = null;\n        }\n        if (resp.status === 416 || etag && newEtag && newEtag !== etag) {\n          this.mustReload = true;\n          throw new EtagMismatch(etag);\n        }\n        if (resp.status >= 300) {\n          throw Error(`Bad response code: ${resp.status}`);\n        }\n        const contentLength = resp.headers.get(\"Content-Length\");\n        if (resp.status === 200 && (!contentLength || +contentLength > length)) {\n          if (controller)\n            controller.abort();\n          throw Error(\n            \"Server returned no content-length header or content-length exceeding request. Check that your storage backend supports HTTP Byte Serving.\"\n          );\n        }\n        const a = yield resp.arrayBuffer();\n        return {\n          data: a,\n          etag: newEtag || void 0,\n          cacheControl: resp.headers.get(\"Cache-Control\") || void 0,\n          expires: resp.headers.get(\"Expires\") || void 0\n        };\n      });\n    }\n  };\n  function getUint64(v, offset) {\n    const wh = v.getUint32(offset + 4, true);\n    const wl = v.getUint32(offset + 0, true);\n    return wh * __pow(2, 32) + wl;\n  }\n  function bytesToHeader(bytes, etag) {\n    const v = new DataView(bytes);\n    const specVersion = v.getUint8(7);\n    if (specVersion > 3) {\n      throw Error(\n        `Archive is spec version ${specVersion} but this library supports up to spec version 3`\n      );\n    }\n    return {\n      specVersion,\n      rootDirectoryOffset: getUint64(v, 8),\n      rootDirectoryLength: getUint64(v, 16),\n      jsonMetadataOffset: getUint64(v, 24),\n      jsonMetadataLength: getUint64(v, 32),\n      leafDirectoryOffset: getUint64(v, 40),\n      leafDirectoryLength: getUint64(v, 48),\n      tileDataOffset: getUint64(v, 56),\n      tileDataLength: getUint64(v, 64),\n      numAddressedTiles: getUint64(v, 72),\n      numTileEntries: getUint64(v, 80),\n      numTileContents: getUint64(v, 88),\n      clustered: v.getUint8(96) === 1,\n      internalCompression: v.getUint8(97),\n      tileCompression: v.getUint8(98),\n      tileType: v.getUint8(99),\n      minZoom: v.getUint8(100),\n      maxZoom: v.getUint8(101),\n      minLon: v.getInt32(102, true) / 1e7,\n      minLat: v.getInt32(106, true) / 1e7,\n      maxLon: v.getInt32(110, true) / 1e7,\n      maxLat: v.getInt32(114, true) / 1e7,\n      centerZoom: v.getUint8(118),\n      centerLon: v.getInt32(119, true) / 1e7,\n      centerLat: v.getInt32(123, true) / 1e7,\n      etag\n    };\n  }\n  function deserializeIndex(buffer) {\n    const p = { buf: new Uint8Array(buffer), pos: 0 };\n    const numEntries = readVarint(p);\n    const entries = [];\n    let lastId = 0;\n    for (let i = 0; i < numEntries; i++) {\n      const v = readVarint(p);\n      entries.push({ tileId: lastId + v, offset: 0, length: 0, runLength: 1 });\n      lastId += v;\n    }\n    for (let i = 0; i < numEntries; i++) {\n      entries[i].runLength = readVarint(p);\n    }\n    for (let i = 0; i < numEntries; i++) {\n      entries[i].length = readVarint(p);\n    }\n    for (let i = 0; i < numEntries; i++) {\n      const v = readVarint(p);\n      if (v === 0 && i > 0) {\n        entries[i].offset = entries[i - 1].offset + entries[i - 1].length;\n      } else {\n        entries[i].offset = v - 1;\n      }\n    }\n    return entries;\n  }\n  function detectVersion(a) {\n    const v = new DataView(a);\n    if (v.getUint16(2, true) === 2) {\n      console.warn(\n        \"PMTiles spec version 2 has been deprecated; please see github.com/protomaps/PMTiles for tools to upgrade\"\n      );\n      return 2;\n    }\n    if (v.getUint16(2, true) === 1) {\n      console.warn(\n        \"PMTiles spec version 1 has been deprecated; please see github.com/protomaps/PMTiles for tools to upgrade\"\n      );\n      return 1;\n    }\n    return 3;\n  }\n  var EtagMismatch = class extends Error {\n  };\n  function getHeaderAndRoot(source, decompress) {\n    return __async(this, null, function* () {\n      const resp = yield source.getBytes(0, 16384);\n      const v = new DataView(resp.data);\n      if (v.getUint16(0, true) !== 19792) {\n        throw new Error(\"Wrong magic number for PMTiles archive\");\n      }\n      if (detectVersion(resp.data) < 3) {\n        return [yield v2_default.getHeader(source)];\n      }\n      const headerData = resp.data.slice(0, HEADER_SIZE_BYTES);\n      const header = bytesToHeader(headerData, resp.etag);\n      const rootDirData = resp.data.slice(\n        header.rootDirectoryOffset,\n        header.rootDirectoryOffset + header.rootDirectoryLength\n      );\n      const dirKey = `${source.getKey()}|${header.etag || \"\"}|${header.rootDirectoryOffset}|${header.rootDirectoryLength}`;\n      const rootDir = deserializeIndex(\n        yield decompress(rootDirData, header.internalCompression)\n      );\n      return [header, [dirKey, rootDir.length, rootDir]];\n    });\n  }\n  function getDirectory(source, decompress, offset, length, header) {\n    return __async(this, null, function* () {\n      const resp = yield source.getBytes(offset, length, void 0, header.etag);\n      const data = yield decompress(resp.data, header.internalCompression);\n      const directory = deserializeIndex(data);\n      if (directory.length === 0) {\n        throw new Error(\"Empty directory is invalid\");\n      }\n      return directory;\n    });\n  }\n  var ResolvedValueCache = class {\n    constructor(maxCacheEntries = 100, prefetch = true, decompress = defaultDecompress) {\n      this.cache = /* @__PURE__ */ new Map();\n      this.maxCacheEntries = maxCacheEntries;\n      this.counter = 1;\n      this.decompress = decompress;\n    }\n    getHeader(source) {\n      return __async(this, null, function* () {\n        const cacheKey = source.getKey();\n        const cacheValue = this.cache.get(cacheKey);\n        if (cacheValue) {\n          cacheValue.lastUsed = this.counter++;\n          const data = cacheValue.data;\n          return data;\n        }\n        const res = yield getHeaderAndRoot(source, this.decompress);\n        if (res[1]) {\n          this.cache.set(res[1][0], {\n            lastUsed: this.counter++,\n            data: res[1][2]\n          });\n        }\n        this.cache.set(cacheKey, {\n          lastUsed: this.counter++,\n          data: res[0]\n        });\n        this.prune();\n        return res[0];\n      });\n    }\n    getDirectory(source, offset, length, header) {\n      return __async(this, null, function* () {\n        const cacheKey = `${source.getKey()}|${header.etag || \"\"}|${offset}|${length}`;\n        const cacheValue = this.cache.get(cacheKey);\n        if (cacheValue) {\n          cacheValue.lastUsed = this.counter++;\n          const data = cacheValue.data;\n          return data;\n        }\n        const directory = yield getDirectory(\n          source,\n          this.decompress,\n          offset,\n          length,\n          header\n        );\n        this.cache.set(cacheKey, {\n          lastUsed: this.counter++,\n          data: directory\n        });\n        this.prune();\n        return directory;\n      });\n    }\n    // for v2 backwards compatibility\n    getArrayBuffer(source, offset, length, header) {\n      return __async(this, null, function* () {\n        const cacheKey = `${source.getKey()}|${header.etag || \"\"}|${offset}|${length}`;\n        const cacheValue = this.cache.get(cacheKey);\n        if (cacheValue) {\n          cacheValue.lastUsed = this.counter++;\n          const data = yield cacheValue.data;\n          return data;\n        }\n        const resp = yield source.getBytes(offset, length, void 0, header.etag);\n        this.cache.set(cacheKey, {\n          lastUsed: this.counter++,\n          data: resp.data\n        });\n        this.prune();\n        return resp.data;\n      });\n    }\n    prune() {\n      if (this.cache.size > this.maxCacheEntries) {\n        let minUsed = Infinity;\n        let minKey = void 0;\n        this.cache.forEach((cacheValue, key) => {\n          if (cacheValue.lastUsed < minUsed) {\n            minUsed = cacheValue.lastUsed;\n            minKey = key;\n          }\n        });\n        if (minKey) {\n          this.cache.delete(minKey);\n        }\n      }\n    }\n    invalidate(source) {\n      return __async(this, null, function* () {\n        this.cache.delete(source.getKey());\n      });\n    }\n  };\n  var SharedPromiseCache = class {\n    constructor(maxCacheEntries = 100, prefetch = true, decompress = defaultDecompress) {\n      this.cache = /* @__PURE__ */ new Map();\n      this.invalidations = /* @__PURE__ */ new Map();\n      this.maxCacheEntries = maxCacheEntries;\n      this.counter = 1;\n      this.decompress = decompress;\n    }\n    getHeader(source) {\n      return __async(this, null, function* () {\n        const cacheKey = source.getKey();\n        const cacheValue = this.cache.get(cacheKey);\n        if (cacheValue) {\n          cacheValue.lastUsed = this.counter++;\n          const data = yield cacheValue.data;\n          return data;\n        }\n        const p = new Promise((resolve, reject) => {\n          getHeaderAndRoot(source, this.decompress).then((res) => {\n            if (res[1]) {\n              this.cache.set(res[1][0], {\n                lastUsed: this.counter++,\n                data: Promise.resolve(res[1][2])\n              });\n            }\n            resolve(res[0]);\n            this.prune();\n          }).catch((e) => {\n            reject(e);\n          });\n        });\n        this.cache.set(cacheKey, { lastUsed: this.counter++, data: p });\n        return p;\n      });\n    }\n    getDirectory(source, offset, length, header) {\n      return __async(this, null, function* () {\n        const cacheKey = `${source.getKey()}|${header.etag || \"\"}|${offset}|${length}`;\n        const cacheValue = this.cache.get(cacheKey);\n        if (cacheValue) {\n          cacheValue.lastUsed = this.counter++;\n          const data = yield cacheValue.data;\n          return data;\n        }\n        const p = new Promise((resolve, reject) => {\n          getDirectory(source, this.decompress, offset, length, header).then((directory) => {\n            resolve(directory);\n            this.prune();\n          }).catch((e) => {\n            reject(e);\n          });\n        });\n        this.cache.set(cacheKey, { lastUsed: this.counter++, data: p });\n        return p;\n      });\n    }\n    // for v2 backwards compatibility\n    getArrayBuffer(source, offset, length, header) {\n      return __async(this, null, function* () {\n        const cacheKey = `${source.getKey()}|${header.etag || \"\"}|${offset}|${length}`;\n        const cacheValue = this.cache.get(cacheKey);\n        if (cacheValue) {\n          cacheValue.lastUsed = this.counter++;\n          const data = yield cacheValue.data;\n          return data;\n        }\n        const p = new Promise((resolve, reject) => {\n          source.getBytes(offset, length, void 0, header.etag).then((resp) => {\n            resolve(resp.data);\n            if (this.cache.has(cacheKey)) {\n            }\n            this.prune();\n          }).catch((e) => {\n            reject(e);\n          });\n        });\n        this.cache.set(cacheKey, { lastUsed: this.counter++, data: p });\n        return p;\n      });\n    }\n    prune() {\n      if (this.cache.size >= this.maxCacheEntries) {\n        let minUsed = Infinity;\n        let minKey = void 0;\n        this.cache.forEach((cacheValue, key) => {\n          if (cacheValue.lastUsed < minUsed) {\n            minUsed = cacheValue.lastUsed;\n            minKey = key;\n          }\n        });\n        if (minKey) {\n          this.cache.delete(minKey);\n        }\n      }\n    }\n    invalidate(source) {\n      return __async(this, null, function* () {\n        const key = source.getKey();\n        if (this.invalidations.get(key)) {\n          return yield this.invalidations.get(key);\n        }\n        this.cache.delete(source.getKey());\n        const p = new Promise((resolve, reject) => {\n          this.getHeader(source).then((h) => {\n            resolve();\n            this.invalidations.delete(key);\n          }).catch((e) => {\n            reject(e);\n          });\n        });\n        this.invalidations.set(key, p);\n      });\n    }\n  };\n  var PMTiles = class {\n    constructor(source, cache, decompress) {\n      if (typeof source === \"string\") {\n        this.source = new FetchSource(source);\n      } else {\n        this.source = source;\n      }\n      if (decompress) {\n        this.decompress = decompress;\n      } else {\n        this.decompress = defaultDecompress;\n      }\n      if (cache) {\n        this.cache = cache;\n      } else {\n        this.cache = new SharedPromiseCache();\n      }\n    }\n    getHeader() {\n      return __async(this, null, function* () {\n        return yield this.cache.getHeader(this.source);\n      });\n    }\n    getZxyAttempt(z, x, y, signal) {\n      return __async(this, null, function* () {\n        const tileId = zxyToTileId(z, x, y);\n        const header = yield this.cache.getHeader(this.source);\n        if (header.specVersion < 3) {\n          return v2_default.getZxy(header, this.source, this.cache, z, x, y, signal);\n        }\n        if (z < header.minZoom || z > header.maxZoom) {\n          return void 0;\n        }\n        let dO = header.rootDirectoryOffset;\n        let dL = header.rootDirectoryLength;\n        for (let depth = 0; depth <= 3; depth++) {\n          const directory = yield this.cache.getDirectory(\n            this.source,\n            dO,\n            dL,\n            header\n          );\n          const entry = findTile(directory, tileId);\n          if (entry) {\n            if (entry.runLength > 0) {\n              const resp = yield this.source.getBytes(\n                header.tileDataOffset + entry.offset,\n                entry.length,\n                signal,\n                header.etag\n              );\n              return {\n                data: yield this.decompress(resp.data, header.tileCompression),\n                cacheControl: resp.cacheControl,\n                expires: resp.expires\n              };\n            }\n            dO = header.leafDirectoryOffset + entry.offset;\n            dL = entry.length;\n          } else {\n            return void 0;\n          }\n        }\n        throw Error(\"Maximum directory depth exceeded\");\n      });\n    }\n    getZxy(z, x, y, signal) {\n      return __async(this, null, function* () {\n        try {\n          return yield this.getZxyAttempt(z, x, y, signal);\n        } catch (e) {\n          if (e instanceof EtagMismatch) {\n            this.cache.invalidate(this.source);\n            return yield this.getZxyAttempt(z, x, y, signal);\n          }\n          throw e;\n        }\n      });\n    }\n    getMetadataAttempt() {\n      return __async(this, null, function* () {\n        const header = yield this.cache.getHeader(this.source);\n        const resp = yield this.source.getBytes(\n          header.jsonMetadataOffset,\n          header.jsonMetadataLength,\n          void 0,\n          header.etag\n        );\n        const decompressed = yield this.decompress(\n          resp.data,\n          header.internalCompression\n        );\n        const dec = new TextDecoder(\"utf-8\");\n        return JSON.parse(dec.decode(decompressed));\n      });\n    }\n    getMetadata() {\n      return __async(this, null, function* () {\n        try {\n          return yield this.getMetadataAttempt();\n        } catch (e) {\n          if (e instanceof EtagMismatch) {\n            this.cache.invalidate(this.source);\n            return yield this.getMetadataAttempt();\n          }\n          throw e;\n        }\n      });\n    }\n  };\n  return __toCommonJS(js_exports);\n})();\n"]}