{"version":3,"sources":["jsdelivr-header.js","/npm/@thi.ng/arrays@2.14.14/argmin.js","/npm/@thi.ng/arrays@2.14.14/fill-range.js","/npm/@thi.ng/arrays@2.14.14/swap.js","/npm/@thi.ng/arrays@2.14.14/quicksort.js","/npm/@thi.ng/arrays@2.14.14/sort-cached.js","/npm/@thi.ng/arrays@2.14.14/arg-sort.js","/npm/@thi.ng/arrays@2.14.14/binary-search.js","/npm/@thi.ng/arrays@2.14.14/bisect.js","/npm/@thi.ng/arrays@2.14.14/blit.js","/npm/@thi.ng/arrays@2.14.14/ends-with.js","/npm/@thi.ng/arrays@2.14.14/ensure-iterable.js","/npm/@thi.ng/arrays@2.14.14/ensure-array.js","/npm/@thi.ng/arrays@2.14.14/filter-all.js","/npm/@thi.ng/arrays@2.14.14/find.js","/npm/@thi.ng/arrays@2.14.14/find-sequence.js","/npm/@thi.ng/arrays@2.14.14/floyd-rivest.js","/npm/@thi.ng/arrays@2.14.14/fuzzy-match.js","/npm/@thi.ng/arrays@2.14.14/is-sorted.js","/npm/@thi.ng/arrays@2.14.14/insert.js","/npm/@thi.ng/arrays@2.14.14/into.js","/npm/@thi.ng/arrays@2.14.14/iterator.js","/npm/@thi.ng/arrays@2.14.14/levenshtein.js","/npm/@thi.ng/arrays@2.14.14/lookup.js","/npm/@thi.ng/arrays@2.14.14/peek.js","/npm/@thi.ng/arrays@2.14.14/shuffle.js","/npm/@thi.ng/arrays@2.14.14/permutation.js","/npm/@thi.ng/arrays@2.14.14/rotate.js","/npm/@thi.ng/arrays@2.14.14/starts-with.js","/npm/@thi.ng/arrays@2.14.14/swizzle.js","/npm/@thi.ng/arrays@2.14.14/threshold.js","/npm/@thi.ng/arrays@2.14.14/topo-sort.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,mvBCNK,MAAC,EAAS,CAAC,EAAK,EAAM,IAAU,EAAO,CAAC,EAAG,IAAM,EAAI,KACxD,IAAI,GAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,OAAQ,EAAI,EAAG,IAAK,CAC1C,MAAM,EAAI,EAAI,GACV,EAAK,EAAG,KACV,EAAM,EACN,EAAK,EAEX,CACE,OAAO,CAAE,EAEL,EAAS,CAAC,EAAO,GAAO,IAAU,EAAO,CAAC,EAAG,IAAM,EAAI,IAAM,EAAO,EAAO,EAAK,GCXhF,EAAY,CAAC,EAAK,EAAQ,EAAG,EAAQ,EAAG,EAAM,EAAI,OAAQ,GAAO,EAAM,EAAQ,GAAK,MACxF,GAAI,EAAO,EACT,KAAO,EAAQ,EAAK,GAAS,EAAM,EAAI,KAAW,OAElD,KAAO,EAAQ,EAAK,GAAS,EAAM,EAAI,KAAW,EAEpD,OAAO,CAAG,ECNN,EAAO,CAAC,EAAK,EAAG,KACpB,MAAM,EAAI,EAAI,GACd,EAAI,GAAK,EAAI,GACb,EAAI,GAAK,CAAC,EAEN,EAAY,IAAI,KACpB,MAAO,EAAG,EAAG,GAAK,EACZ,EAAI,EAAO,OACjB,OAAQ,GACN,KAAK,EACH,OAAO,EACT,KAAK,EACH,MAAO,CAAC,EAAG,EAAG,KACZ,EAAK,EAAG,EAAG,GACX,EAAK,EAAG,EAAG,EAAE,EAEjB,KAAK,EACH,MAAO,CAAC,EAAG,EAAG,KACZ,EAAK,EAAG,EAAG,GACX,EAAK,EAAG,EAAG,GACX,EAAK,EAAG,EAAG,EAAE,EAEjB,KAAK,EACH,MAAO,CAAC,EAAG,EAAG,KACZ,EAAK,EAAG,EAAG,GACX,EAAK,EAAG,EAAG,GACX,EAAK,EAAG,EAAG,GACX,EAAK,EAAG,EAAG,EAAE,EAEjB,QACE,MAAO,CAAC,EAAG,EAAG,KACZ,EAAK,EAAG,EAAG,GACX,IAAK,IAAI,EAAI,EAAG,KAAM,GAAK,EAAK,EAAO,GAAI,EAAG,EAAE,EAExD,EChCA,SAAS,EAAU,EAAK,EAAO,EAAS,EAAQ,EAAM,EAAQ,EAAG,EAAM,EAAI,OAAS,GAClF,GAAI,EAAQ,EAAK,CACf,MAAM,EAAQ,EAAI,GAAS,EAAM,GAAS,IAC1C,IAAI,EAAI,EAAQ,EACZ,EAAI,EAAM,EACd,OAAa,CACX,GACE,UACO,EAAK,EAAI,GAAI,GAAS,GAC/B,GACE,UACO,EAAK,EAAI,GAAI,GAAS,GAC/B,GAAI,GAAK,EAAG,MACZ,EAAM,EAAK,EAAG,EACpB,CACI,EAAU,EAAK,EAAM,EAAO,EAAO,GACnC,EAAU,EAAK,EAAM,EAAO,EAAI,EAAG,EACvC,CACE,OAAO,CACT,CChBK,MAAC,EAAkB,CAAC,EAAK,EAAK,EAAM,KACvC,MAAM,EAAO,EAAW,GAAO,EAAI,IAAI,GAAO,EAG9C,OAFA,EAAO,EAAK,SAAW,EAAI,OAAQ,6BACnC,EAAU,EAAM,EAAK,EAAU,IACxB,CAAG,ECNN,EAAU,CAAC,EAAK,EAAM,KAC1B,MAAM,EAAO,IAAI,GACjB,OAAO,EACL,EAAU,IAAI,MAAM,EAAK,SACzB,EACA,EACD,ECPG,EAAe,CAAC,EAAK,EAAG,EAAO,GAAO,EAAI,EAAM,EAAS,EAAM,EAAG,EAAO,EAAI,OAAS,KAC1F,MAAM,EAAK,EAAI,GACf,KAAO,GAAO,GAAM,CAClB,MAAM,EAAM,EAAM,IAAS,EACrB,EAAI,EAAI,EAAI,EAAI,IAAO,GAC7B,GAAI,EAAI,EACN,EAAM,EAAM,MACP,MAAI,EAAI,GAGb,OAAO,EAFP,EAAO,EAAM,CAGnB,CACA,CACE,OAAQ,EAAM,CAAC,EAEX,EAAsB,CAAC,EAAK,EAAG,EAAM,EAAe,EAAM,EAAG,EAAO,EAAI,OAAS,KACrF,KAAO,GAAO,GAAM,CAClB,MAAM,EAAM,EAAM,IAAS,EACrB,EAAI,EAAI,EAAI,GAAM,GACxB,GAAI,EAAI,EACN,EAAM,EAAM,MACP,MAAI,EAAI,GAGb,OAAO,EAFP,EAAO,EAAM,CAGnB,CACA,CACE,OAAQ,EAAM,CAAC,EAEX,EAAgB,CAAC,EAAK,KAC1B,IAAI,EAAM,EAAI,IAAM,EAAI,EAAI,EAC5B,OAAO,EAAI,KAAS,EAAI,EAAM,EAAI,GAAK,GAAK,EAAM,GAAK,CAAC,EAEpD,EAAgB,CAAC,EAAK,KAC1B,IAAI,EAAM,EAAI,IAAM,EAAI,EAAI,EAE5B,OADA,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EACxB,EAAI,KAAS,EAAI,EAAM,EAAI,GAAK,GAAK,EAAM,GAAK,CAAC,EAEpD,EAAgB,CAAC,EAAK,KAC1B,IAAI,EAAM,EAAI,IAAM,EAAI,EAAI,EAG5B,OAFA,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EAC/B,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EACxB,EAAI,KAAS,EAAI,EAAM,EAAI,GAAK,GAAK,EAAM,GAAK,CAAC,EAEpD,EAAiB,CAAC,EAAK,KAC3B,IAAI,EAAM,EAAI,IAAM,EAAI,EAAI,EAI5B,OAHA,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EAC/B,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EAC/B,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EACxB,EAAI,KAAS,EAAI,EAAM,EAAI,GAAK,GAAK,EAAM,GAAK,CAAC,EAEpD,EAAiB,CAAC,EAAK,KAC3B,IAAI,EAAM,EAAI,KAAO,EAAI,GAAK,EAK9B,OAJA,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EAC/B,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EAC/B,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EAC/B,GAAO,EAAI,EAAM,IAAM,EAAI,EAAI,EACxB,EAAI,KAAS,EAAI,EAAM,EAAI,GAAK,GAAK,EAAM,GAAK,CAAC,EAEpD,EAAQ,GAAM,EAAI,GAAK,EAAI,EAAI,EAAI,EACnC,EAAQ,GAAM,EAAI,GAAK,EAAI,EAAI,EAC/B,EAAO,CAAC,EAAG,KAAO,EAAI,EAAI,GAAK,EAAI,EAAI,EAAI,GAAO,EAAI,GAAK,EAC3D,EAAO,CAAC,EAAG,KAAO,EAAI,EAAI,GAAK,EAAI,EAAI,GAAO,EAAI,GAAK,EACvD,EAAQ,GAAM,EAAI,GAAK,EAAI,ECjEjC,SAAS,EAAO,EAAK,EAAQ,EAAI,SAAW,GAC1C,MAAO,CAAC,EAAI,MAAM,EAAG,GAAQ,EAAI,MAAM,GACzC,CACA,SAAS,EAAW,EAAK,GACvB,MAAM,EAAI,EAAI,UAAU,GACxB,OAAO,GAAK,EAAI,EAAO,EAAK,GAAK,CAAC,EAAK,EAAI,MAAM,EAAG,GACtD,CCNA,SAAS,EAAO,EAAM,EAAG,EAAK,GAC5B,MAAO,EAAI,EAAI,EAAI,GAAM,EAAO,EAAG,EAAI,OAAQ,EAAG,EAAK,QACvD,GAAI,EAAK,GAAK,GAAM,EAAI,OAAO,EAC/B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,IAAK,CAC3B,MAAM,EAAM,EAAI,EAAK,GACrB,IAAQ,IAAS,EAAK,EAAK,GAAK,EACpC,CACE,OAAO,CACT,CACA,SAAS,EAAW,EAAM,EAAG,EAAK,GAChC,MAAO,EAAI,EAAI,EAAI,GAAM,EAAO,EAAG,EAAI,OAAQ,EAAG,EAAK,QACvD,GAAI,EAAK,GAAK,GAAM,EAAI,OAAO,EAC/B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,IAAK,CAC3B,MAAM,EAAM,EAAK,EAAI,EAAK,GAAI,EAAK,EAAK,GAAI,EAAK,QACzC,IAAR,IAAmB,EAAK,EAAK,GAAK,EACtC,CACE,OAAO,CACT,CACA,SAAS,EAAO,EAAM,EAAM,EAAO,EAAK,EAAO,GAC7C,MAAO,EAAI,EAAI,EAAI,GAAM,EAAO,EAAG,EAAM,GAAI,EAAK,GAAI,EAAM,KACrD,EAAI,EAAI,EAAI,GAAM,EAAO,EAAG,EAAM,GAAI,EAAK,GAAI,EAAM,IAC5D,GAAI,EAAK,GAAK,EAAK,GAAK,GAAM,GAAM,GAAM,EAAI,OAAO,EACrD,MAAM,EAAU,EAAM,GAChB,EAAU,EAAM,GACtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,IACtB,IAAK,IAAI,EAAI,EAAG,GAAQ,EAAK,GAAK,EAAU,EAAI,GAAQ,EAAK,GAAK,EAAU,EAAI,EAAI,EAAI,IAAK,CAC3F,MAAM,EAAM,EAAI,EAAO,GACvB,IAAQ,IAAS,EAAK,EAAO,GAAK,EACxC,CAEE,OAAO,CACT,CACA,MAAM,EAAS,CAAC,EAAI,EAAI,EAAI,KACtB,EAAK,GACP,GAAM,EACN,GAAM,EACN,EAAK,GACI,EAAK,EAAK,IACnB,EAAK,EAAK,GAEL,CAAC,EAAI,EAAI,EAAI,ICvChB,EAAW,CAAC,EAAK,EAAQ,EAAQ,KACrC,IAAI,EAAI,EAAI,OACR,EAAI,EAAO,OACf,GAAI,EAAI,EAAG,OAAO,EAClB,OAAS,EAAG,KAAM,GAAK,EAAM,EAAI,GAAI,EAAO,MAE5C,OAAO,EAAI,CAAC,ECNR,EAAkB,KAChB,MAAL,IAAc,EAAE,OAAO,YAAc,EAAY,0BAA0B,KACrE,GCAH,EAAe,GAAM,EAAQ,GAAK,EAAI,IAAI,EAAe,IACzD,EAAmB,GAAM,EAAY,GAAK,EAAI,IAAI,EAAe,ICJjE,EAAY,CAAC,KAAS,KAC1B,MAAM,EAAM,IAAI,MAAM,EAAG,OAAS,GAAG,KAAK,GAAG,KAAI,IAAM,KACjD,EAAI,EAAG,GACb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAE,OAAQ,EAAI,EAAG,OAAQ,EAAI,EAAG,IAClD,GAAI,EAAK,EAAE,IACT,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IAAK,EAAI,GAAG,KAAK,EAAG,GAAG,IAGlD,OAAO,CAAG,ECPN,EAAO,CAAC,EAAK,EAAG,EAAQ,KAC5B,MAAM,EAAI,EAAU,EAAK,EAAG,GAC5B,OAAc,IAAP,EAAW,EAAI,QAAK,CAAM,EAE7B,EAAY,CAAC,EAAK,EAAG,EAAQ,KACjC,IAAK,IAAI,EAAI,EAAI,OAAQ,KAAM,GAC7B,GAAI,EAAM,EAAG,EAAI,IAAK,OAAO,EAE/B,OAAQ,CAAC,ECTX,SAAS,EAAa,EAAK,EAAQ,EAAQ,GACzC,MAAM,EAAI,EAAI,OACR,EAAI,EAAO,OACX,EAAM,EAAI,EAChB,IAAK,GAAK,EAAM,EAAG,OAAQ,EAC3B,KAAO,EAAQ,GAAG,CAChB,MAAM,EAAM,EAAI,QAAQ,EAAO,GAAI,GACnC,GAAI,EAAM,GAAK,EAAM,EAAK,OAAQ,EAClC,IAAI,EAAI,EACR,KAAO,KAAM,GACX,GAAI,EAAI,EAAM,KAAO,EAAO,GAAI,CAC9B,EAAQ,EAAM,EACd,KACR,CAEI,GAAU,IAAN,EAAS,OAAO,CACxB,CACE,OAAQ,CACV,CACA,SAAS,EAAiB,EAAK,EAAQ,EAAQ,EAAI,OAAS,GAC1D,MAAM,EAAI,EAAI,OACR,EAAI,EAAO,OACjB,IAAK,GAAK,EAAI,EAAG,OAAQ,EAEzB,IAAI,EACJ,IAAK,IAAI,EAFT,EAAQ,KAAK,IAAI,EAAO,EAAI,GAER,GAAK,EAAG,IAAK,CAC/B,IAAK,EAAI,EAAG,KAAM,GACZ,EAAI,EAAI,KAAO,EAAO,KAE5B,GAAI,EAAI,EAAG,OAAO,CACtB,CACE,OAAQ,CACV,CC9BA,SAAS,EAAY,EAAK,EAAI,EAAG,EAAM,EAAS,EAAO,EAAG,EAAQ,EAAI,OAAS,GAC7E,KAAO,EAAQ,GAAM,CACnB,GAAI,EAAQ,EAAO,IAAK,CACtB,MAAM,EAAI,EAAQ,EAAO,EACnB,EAAK,EAAI,EAAO,EAChB,EAAI,KAAK,IAAI,GACb,EAAI,GAAM,KAAK,IAAI,GAAK,EAAI,IAC5B,EAAK,GAAM,KAAK,KAAK,EAAI,IAAM,EAAI,GAAK,IAAM,KAAK,KAAK,EAAK,EAAI,GACvE,EACE,EACA,EACA,EACA,KAAK,IAAI,EAAM,EAAI,EAAK,EAAI,EAAI,EAAK,GACrC,KAAK,IAAI,EAAO,GAAK,EAAI,GAAM,EAAI,EAAI,EAAK,GAEpD,CACI,MAAM,EAAI,EAAI,GACd,IAAI,EAAI,EACJ,EAAI,EAGR,IAFA,EAAK,EAAK,EAAM,GACZ,EAAI,EAAI,GAAQ,GAAK,GAAG,EAAK,EAAK,EAAO,GACtC,EAAI,GAAG,CAIZ,IAHA,EAAK,EAAK,EAAG,GACb,IACA,IACO,EAAQ,EAAI,GAAI,GAAK,GAAG,IAC/B,KAAO,EAAQ,EAAI,GAAI,GAAK,GAAG,GACrC,CACkC,IAA1B,EAAQ,EAAI,GAAO,GACrB,EAAK,EAAK,EAAM,IAEhB,IACA,EAAK,EAAK,EAAG,IAEX,GAAK,IAAG,EAAO,EAAI,GACnB,GAAK,IAAG,EAAQ,EAAI,EAC5B,CACE,OAAO,CACT,CCvCK,MAAC,EAAa,CAAC,EAAQ,EAAO,EAAQ,KACzC,MAAM,EAAK,EAAO,OACZ,EAAK,EAAM,OACjB,GAAI,EAAK,EACP,OAAO,EAET,GAAI,IAAO,EACT,OAAO,EAAM,EAAO,GAEtB,EAAM,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,IAAK,CACxC,MAAM,EAAI,EAAM,GAChB,KAAO,EAAI,GACT,GAAI,EAAM,EAAO,KAAM,GACrB,SAAS,EAGb,OAAO,CACX,CACE,OAAO,CAAI,EClBP,EAAW,CAAC,EAAK,EAAM,EAAS,EAAQ,EAAG,EAAM,EAAI,UACzD,IAAI,EAAO,EAAI,GACf,OAAS,EAAQ,GAAK,CACpB,MAAM,EAAO,EAAI,GACjB,GAAI,EAAI,EAAM,GAAQ,EAAG,OAAO,EAChC,EAAO,CACX,CACE,OAAO,CAAI,ECRP,EAAS,CAAC,EAAK,EAAG,EAAG,EAAI,MAAa,EAAI,GAAK,GAAK,GAAK,EAAI,EAAI,EAAM,EAAa,EAAK,EAAG,EAAG,GAC/F,EAAe,CAAC,EAAK,EAAG,EAAG,EAAI,OACnC,IAAI,EAAI,EAAI,OAAS,EAAI,EAAI,OAAS,EAAI,EAC1C,OAAS,EAAI,GAAK,EAAI,GAAK,EAAI,EAAI,GAEnC,OADA,EAAI,GAAK,EACF,CAAG,ECLN,EAAO,CAAC,EAAM,EAAK,EAAM,OAC7B,IAAK,MAAM,KAAK,EAAK,CACnB,KAAM,EAAM,EAAG,MACf,EAAK,KAAK,EACd,CACE,OAAO,CAAI,ECLb,SAAU,EAAc,EAAK,EAAQ,EAAG,GACtC,IAAK,EAAK,YACF,IAAR,IAAmB,EAAM,EAAI,QAC7B,MAAM,EAAO,GAAS,EAAM,GAAK,EACjC,KAAO,IAAU,EAAK,GAAS,QACvB,EAAI,EAEd,CCPA,MAAM,EAAa,CAAC,EAAG,IAAM,IAAM,EAC7B,GAAc,CAAC,EAAG,EAAG,EAAU,IAAU,EAAQ,KACrD,GAAI,IAAM,EACR,OAAO,EAET,GAAI,EAAE,OAAS,EAAE,OAAQ,CACvB,MAAM,EAAM,EACZ,EAAI,EACJ,EAAI,CACR,CACE,IAAI,EAAK,EAAE,OACP,EAAK,EAAE,OACX,KAAO,EAAK,GAAK,EAAM,IAAI,GAAK,IAAI,KAClC,IACA,IAEF,IAAI,EAAS,EACb,KAAO,EAAS,GAAM,EAAM,EAAE,GAAS,EAAE,KACvC,IAIF,GAFA,GAAM,EACN,GAAM,EACK,IAAP,GAAY,EAAK,EACnB,OAAO,EAET,IACI,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAbA,EAAI,EAcR,MAAM,EAAO,CAAC,EAAK,EAAK,EAAK,EAAI,IACxB,EAAM,GAAO,EAAM,EAAM,EAAM,EAAM,EAAM,EAAI,EAAM,EAAI,EAAM,EAAK,GAAM,EAAM,EAAM,EAEzF,EAAS,GACf,IAAK,EAAI,EAAG,EAAI,EAAI,IAClB,EAAO,KAAK,EAAI,EAAG,EAAE,EAAS,IAEhC,MAAM,EAAM,EAAO,OAAS,EACtB,EAAM,EAAK,EACjB,KAAO,EAAI,GAAO,CAOhB,IANA,EAAM,EAAE,GAAU,EAAK,IACvB,EAAM,EAAE,GAAU,EAAK,EAAI,IAC3B,EAAM,EAAE,GAAU,EAAK,EAAI,IAC3B,EAAM,EAAE,GAAU,EAAK,EAAI,IAC3B,EAAK,GAAK,EACV,EAAU,IACL,EAAI,EAAG,EAAI,EAAK,GAAK,EACxB,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GAChB,EAAK,EAAK,EAAI,EAAI,EAAI,EAAK,GAC3B,EAAK,EAAK,EAAI,EAAI,EAAI,EAAK,GAC3B,EAAK,EAAK,EAAI,EAAI,EAAI,EAAK,GAC3B,EAAK,EAAK,EAAI,EAAI,EAAI,EAAK,GAC3B,EAAK,IAAY,EAAU,GAC3B,EAAO,GAAK,EACZ,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EAEP,GAAI,EAAU,EAAS,OAAO,GAClC,CACE,KAAO,EAAI,GAAM,CAIf,IAHA,EAAM,EAAE,GAAU,EAAK,IACvB,IAAO,EACP,EAAU,IACL,EAAI,EAAG,EAAI,EAAK,GAAK,EACxB,EAAK,EAAO,GACZ,EAAO,GAAK,EAAK,EAAK,EAAI,EAAI,EAAI,EAAK,EAAO,EAAI,IAClD,EAAK,IAAY,EAAU,GAC3B,EAAK,EAEP,GAAI,EAAU,EAAS,OAAO,GAClC,CACE,OAAO,CAAE,EAEL,GAAwB,CAAC,EAAG,EAAG,EAAU,IAAU,EAAQ,KAC/D,MAAM,EAAI,KAAK,IAAI,EAAE,OAAQ,EAAE,QAC/B,OAAO,EAAI,EAAI,GAAY,EAAG,EAAG,EAAS,GAAS,EAAI,CAAC,ECtFpD,GAAS,CAAC,EAAO,IAAQ,EAAI,KAAK,IAAO,EAAY,EAAG,EAAG,EAAM,QAAS,EAAM,MAChF,GAAe,CAAC,EAAO,IAAQ,EAAI,KAAK,GAAM,EAAM,KCFpD,GAAS,GAAQ,EAAI,GACrB,GAAQ,GAAQ,EAAI,EAAI,OAAS,GCCjC,GAAe,CAAC,EAAK,EAAQ,EAAG,EAAM,EAAI,OAAQ,EAAM,KAK5D,IAJA,EACE,GAAS,GAAK,GAAO,GAAS,GAAO,EAAI,OACzC,iBAAiB,MAAU,KAEtB,EAAM,EAAQ,GAAG,CACtB,MAAM,EAA6B,EAAzB,EAAI,OAAO,EAAO,GACtB,EAAI,EAAI,GACd,EAAI,GAAK,IAAM,GACf,EAAI,GAAO,CACf,CACE,OAAO,CAAG,EAEN,GAAU,CAAC,EAAK,EAAI,EAAI,OAAQ,EAAM,IAAW,GAAa,EAAK,EAAG,EAAG,GCZ/E,SAAS,GAAY,EAAK,GACxB,OAAO,GACL,EAAU,EAAS,GAAO,IAAI,MAAM,GAAO,QAC3C,EACA,EAEJ,CCTK,MAAC,GAAS,CAAC,EAAK,KACb,EAAM,GAAW,EAAK,KACxB,EAAM,EACR,EAAI,QAAQ,EAAI,OAAO,GAAI,IAE3B,EAAI,WAAW,EAAI,QAAQ,IAEtB,GANmC,EAQtC,GAAc,CAAC,EAAK,KACxB,KAAM,EAAM,GAAW,EAAK,IAAO,OAAO,EAC1C,GAAI,EAAM,EAAG,CACX,MAAM,EAAM,EAAI,MAAM,GAAI,GAC1B,EAAI,WAAW,GAAI,GACnB,EAAI,IAAI,EAAK,EAAI,OAAS,EAC9B,MAAS,GAAI,EAAM,EAAG,CAClB,MAAM,EAAM,EAAI,MAAM,EAAI,OAAS,GACnC,EAAI,WAAW,EAAK,GACpB,EAAI,IAAI,EAAK,EACjB,CACE,OAAO,CAAG,EAEN,GAAa,CAAC,EAAK,IAAQ,EAAI,QAAgB,EAAN,GAAW,EAAI,OAAS,ECrBjE,GAAa,CAAC,EAAK,EAAQ,EAAQ,KACvC,IAAI,EAAI,EAAI,OACR,EAAI,EAAO,OACf,GAAI,EAAI,EAAG,OAAO,EAClB,MAAQ,GAAK,GAAK,EAAM,EAAI,GAAI,EAAO,MAEvC,OAAO,EAAI,CAAC,ECPR,GAAW,IACf,MAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAK,EACjC,OAAQ,EAAM,QACZ,KAAK,EACH,MAAO,IAAM,GACf,KAAK,EACH,OAAQ,GAAM,CAAC,EAAE,IACnB,KAAK,EACH,OAAQ,GAAM,CAAC,EAAE,GAAI,EAAE,IACzB,KAAK,EACH,OAAQ,GAAM,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,IAC/B,KAAK,EACH,OAAQ,GAAM,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,IACrC,KAAK,EACH,OAAQ,GAAM,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,IAC3C,KAAK,EACH,OAAQ,GAAM,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,IACjD,KAAK,EACH,OAAQ,GAAM,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,IACvD,KAAK,EACH,OAAQ,GAAM,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,IAC7D,QACE,OAAQ,IACN,IAAI,EAAI,EAAM,OACd,MAAM,EAAM,IAAI,MAAM,GACtB,KAAO,KAAM,GAAK,EAAI,GAAK,EAAE,EAAM,IACnC,OAAO,CAAG,EAElB,EC5BM,GAAqB,CAAC,EAAY,KACtC,MAAM,EAAc,OAAO,QAAQ,GAAY,KAAI,EAAE,EAAG,KAAO,EAAE,EAAG,KAAI,MAAK,CAAC,EAAG,IAAM,EAAE,GAAK,EAAE,KAChG,OAAQ,IACN,MAAM,EAAM,EAAY,MAAM,GAAM,GAAK,EAAE,KAC3C,OAAO,EAAM,EAAI,GAAK,CAAU,CACjC,EAEG,GAAqB,CAAC,EAAY,KACtC,MAAM,EAAc,OAAO,QAAQ,GAAY,KAAI,EAAE,EAAG,KAAO,EAAE,EAAG,KAAI,MAAK,CAAC,EAAG,IAAM,EAAE,GAAK,EAAE,KAChG,OAAQ,IACN,MAAM,EAAM,EAAY,MAAM,GAAM,GAAK,EAAE,KAC3C,OAAO,EAAM,EAAI,GAAK,CAAU,CACjC,ECXG,GAAW,CAAC,EAAO,KACvB,MAAM,EAAS,GACT,EAAW,GACX,EAAO,CAAC,EAAI,KAChB,EAAoB,MAAb,EAAM,GAAa,iBAAiB,KAC3C,GAAQ,EAAO,GAAK,qBAAqB,EAAK,KAAK,WACnD,EAAO,IAAM,EACb,MAAM,EAAW,EAAK,EAAM,GAAK,GACjC,GAAI,EACF,IAAK,MAAM,KAAK,EAAU,EAAK,EAAG,IAAI,EAAM,IAE9C,EAAO,IAAM,EACR,EAAS,SAAS,IAAK,EAAS,KAAK,EAAG,EAE/C,IAAK,MAAM,KAAM,EAAO,EAAK,EAAI,CAAC,IAClC,OAAO,CAAQ,S","file":"/npm/@thi.ng/arrays@2.14.14/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@thi.ng/arrays@2.14.14/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const argMin = (buf, min = Infinity, pred = (a, b) => a < b) => {\n  let id = -1;\n  for (let i = 0, n = buf.length; i < n; i++) {\n    const x = buf[i];\n    if (pred(x, min)) {\n      min = x;\n      id = i;\n    }\n  }\n  return id;\n};\nconst argMax = (items, min = -Infinity, pred = (a, b) => a > b) => argMin(items, min, pred);\nexport {\n  argMax,\n  argMin\n};\n","const fillRange = (buf, index = 0, start = 0, end = buf.length, step = end > start ? 1 : -1) => {\n  if (step > 0) {\n    for (; start < end; start += step) buf[index++] = start;\n  } else {\n    for (; start > end; start += step) buf[index++] = start;\n  }\n  return buf;\n};\nexport {\n  fillRange\n};\n","const swap = (arr, x, y) => {\n  const t = arr[x];\n  arr[x] = arr[y];\n  arr[y] = t;\n};\nconst multiSwap = (...arrays) => {\n  const [b, c, d] = arrays;\n  const n = arrays.length;\n  switch (n) {\n    case 0:\n      return swap;\n    case 1:\n      return (a, x, y) => {\n        swap(a, x, y);\n        swap(b, x, y);\n      };\n    case 2:\n      return (a, x, y) => {\n        swap(a, x, y);\n        swap(b, x, y);\n        swap(c, x, y);\n      };\n    case 3:\n      return (a, x, y) => {\n        swap(a, x, y);\n        swap(b, x, y);\n        swap(c, x, y);\n        swap(d, x, y);\n      };\n    default:\n      return (a, x, y) => {\n        swap(a, x, y);\n        for (let i = n; i-- > 0; ) swap(arrays[i], x, y);\n      };\n  }\n};\nexport {\n  multiSwap,\n  swap\n};\n","import { compare } from \"@thi.ng/compare/compare\";\nimport { swap } from \"./swap.js\";\nfunction quickSort(arr, _cmp = compare, _swap = swap, start = 0, end = arr.length - 1) {\n  if (start < end) {\n    const pivot = arr[start + (end - start >> 1)];\n    let s = start - 1;\n    let e = end + 1;\n    while (true) {\n      do {\n        s++;\n      } while (_cmp(arr[s], pivot) < 0);\n      do {\n        e--;\n      } while (_cmp(arr[e], pivot) > 0);\n      if (s >= e) break;\n      _swap(arr, s, e);\n    }\n    quickSort(arr, _cmp, _swap, start, e);\n    quickSort(arr, _cmp, _swap, e + 1, end);\n  }\n  return arr;\n}\nexport {\n  quickSort\n};\n","import { isFunction } from \"@thi.ng/checks/is-function\";\nimport { compare } from \"@thi.ng/compare/compare\";\nimport { assert } from \"@thi.ng/errors/assert\";\nimport { quickSort } from \"./quicksort.js\";\nimport { multiSwap } from \"./swap.js\";\nconst sortByCachedKey = (src, key, cmp = compare) => {\n  const keys = isFunction(key) ? src.map(key) : key;\n  assert(keys.length === src.length, `keys.length != src.length`);\n  quickSort(keys, cmp, multiSwap(src));\n  return src;\n};\nexport {\n  sortByCachedKey\n};\n","import { compare } from \"@thi.ng/compare/compare\";\nimport { fillRange } from \"./fill-range.js\";\nimport { sortByCachedKey } from \"./sort-cached.js\";\nconst argSort = (src, cmp = compare) => {\n  const $src = [...src];\n  return sortByCachedKey(\n    fillRange(new Array($src.length)),\n    $src,\n    cmp\n  );\n};\nexport {\n  argSort\n};\n","import { compare } from \"@thi.ng/compare/compare\";\nimport { compareNumAsc } from \"@thi.ng/compare/numeric\";\nconst binarySearch = (buf, x, key = (x2) => x2, cmp = compare, low = 0, high = buf.length - 1) => {\n  const kx = key(x);\n  while (low <= high) {\n    const mid = low + high >>> 1;\n    const c = cmp(key(buf[mid]), kx);\n    if (c < 0) {\n      low = mid + 1;\n    } else if (c > 0) {\n      high = mid - 1;\n    } else {\n      return mid;\n    }\n  }\n  return -low - 1;\n};\nconst binarySearchNumeric = (buf, x, cmp = compareNumAsc, low = 0, high = buf.length - 1) => {\n  while (low <= high) {\n    const mid = low + high >>> 1;\n    const c = cmp(buf[mid], x);\n    if (c < 0) {\n      low = mid + 1;\n    } else if (c > 0) {\n      high = mid - 1;\n    } else {\n      return mid;\n    }\n  }\n  return -low - 1;\n};\nconst binarySearch2 = (buf, x) => {\n  let idx = buf[1] <= x ? 1 : 0;\n  return buf[idx] === x ? idx : buf[0] < x ? -idx - 2 : -1;\n};\nconst binarySearch4 = (buf, x) => {\n  let idx = buf[2] <= x ? 2 : 0;\n  idx |= buf[idx + 1] <= x ? 1 : 0;\n  return buf[idx] === x ? idx : buf[0] < x ? -idx - 2 : -1;\n};\nconst binarySearch8 = (buf, x) => {\n  let idx = buf[4] <= x ? 4 : 0;\n  idx |= buf[idx + 2] <= x ? 2 : 0;\n  idx |= buf[idx + 1] <= x ? 1 : 0;\n  return buf[idx] === x ? idx : buf[0] < x ? -idx - 2 : -1;\n};\nconst binarySearch16 = (buf, x) => {\n  let idx = buf[8] <= x ? 8 : 0;\n  idx |= buf[idx + 4] <= x ? 4 : 0;\n  idx |= buf[idx + 2] <= x ? 2 : 0;\n  idx |= buf[idx + 1] <= x ? 1 : 0;\n  return buf[idx] === x ? idx : buf[0] < x ? -idx - 2 : -1;\n};\nconst binarySearch32 = (buf, x) => {\n  let idx = buf[16] <= x ? 16 : 0;\n  idx |= buf[idx + 4] <= x ? 8 : 0;\n  idx |= buf[idx + 4] <= x ? 4 : 0;\n  idx |= buf[idx + 2] <= x ? 2 : 0;\n  idx |= buf[idx + 1] <= x ? 1 : 0;\n  return buf[idx] === x ? idx : buf[0] < x ? -idx - 2 : -1;\n};\nconst bsLT = (i) => i < 0 ? -i - 2 : i - 1;\nconst bsLE = (i) => i < 0 ? -i - 2 : i;\nconst bsGT = (i, n) => (i = i < 0 ? -i - 1 : i + 1, i < n ? i : -1);\nconst bsGE = (i, n) => (i = i < 0 ? -i - 1 : i, i < n ? i : -1);\nconst bsEQ = (i) => i < 0 ? -1 : i;\nexport {\n  binarySearch,\n  binarySearch16,\n  binarySearch2,\n  binarySearch32,\n  binarySearch4,\n  binarySearch8,\n  binarySearchNumeric,\n  bsEQ,\n  bsGE,\n  bsGT,\n  bsLE,\n  bsLT\n};\n","function bisect(src, index = src.length >>> 1) {\n  return [src.slice(0, index), src.slice(index)];\n}\nfunction bisectWith(src, pred) {\n  const i = src.findIndex(pred);\n  return i >= 0 ? bisect(src, i) : [src, src.slice(0, 0)];\n}\nexport {\n  bisect,\n  bisectWith\n};\n","function blit1d(dest, x, src, mask) {\n  const [sx, sw, dx, dw] = __clip(0, src.length, x, dest.length);\n  if (sw < 1 || dx >= dw) return dest;\n  for (let i = 0; i < sw; i++) {\n    const val = src[sx + i];\n    val !== mask && (dest[dx + i] = val);\n  }\n  return dest;\n}\nfunction blitPred1d(dest, x, src, pred) {\n  const [sx, sw, dx, dw] = __clip(0, src.length, x, dest.length);\n  if (sw < 1 || dx >= dw) return dest;\n  for (let i = 0; i < sw; i++) {\n    const val = pred(src[sx + i], dest[dx + i], sx + i);\n    val !== void 0 && (dest[dx + i] = val);\n  }\n  return dest;\n}\nfunction blit2d(dest, dpos, dsize, src, ssize, mask) {\n  const [sx, sw, dx, dw] = __clip(0, ssize[0], dpos[0], dsize[0]);\n  const [sy, sh, dy, dh] = __clip(0, ssize[1], dpos[1], dsize[1]);\n  if (sw < 1 || sh < 1 || dx >= dw || dy >= dh) return dest;\n  const sstride = ssize[0];\n  const dstride = dsize[0];\n  for (let y = 0; y < sh; y++) {\n    for (let x = 0, soff = (sy + y) * sstride + sx, doff = (dy + y) * dstride + dx; x < sw; x++) {\n      const val = src[soff + x];\n      val !== mask && (dest[doff + x] = val);\n    }\n  }\n  return dest;\n}\nconst __clip = (sx, sw, dx, dw) => {\n  if (dx < 0) {\n    sx -= dx;\n    sw += dx;\n    dx = 0;\n  } else if (dx + sw > dw) {\n    sw = dw - dx;\n  }\n  return [sx, sw, dx, dw];\n};\nexport {\n  blit1d,\n  blit2d,\n  blitPred1d\n};\n","import { equiv as _eq } from \"@thi.ng/equiv\";\nconst endsWith = (buf, needle, equiv = _eq) => {\n  let i = buf.length;\n  let j = needle.length;\n  if (i < j) return false;\n  while (--i, j-- > 0 && equiv(buf[i], needle[j])) {\n  }\n  return j < 0;\n};\nexport {\n  endsWith\n};\n","import { illegalArgs } from \"@thi.ng/errors/illegal-arguments\";\nconst ensureIterable = (x) => {\n  (x == null || !x[Symbol.iterator]) && illegalArgs(`value is not iterable: ${x}`);\n  return x;\n};\nexport {\n  ensureIterable\n};\n","import { isArray } from \"@thi.ng/checks/is-array\";\nimport { isArrayLike } from \"@thi.ng/checks/is-arraylike\";\nimport { ensureIterable } from \"./ensure-iterable.js\";\nconst ensureArray = (x) => isArray(x) ? x : [...ensureIterable(x)];\nconst ensureArrayLike = (x) => isArrayLike(x) ? x : [...ensureIterable(x)];\nexport {\n  ensureArray,\n  ensureArrayLike\n};\n","const filterAll = (pred, ...xs) => {\n  const res = new Array(xs.length + 1).fill(0).map(() => []);\n  const a = xs[0];\n  for (let i = 0, n = a.length, m = xs.length; i < n; i++) {\n    if (pred(a[i])) {\n      for (let j = 0; j < m; j++) res[j].push(xs[j][i]);\n    }\n  }\n  return res;\n};\nexport {\n  filterAll\n};\n","import { equiv as _equiv } from \"@thi.ng/equiv\";\nconst find = (buf, x, equiv = _equiv) => {\n  const i = findIndex(buf, x, equiv);\n  return i !== -1 ? buf[i] : void 0;\n};\nconst findIndex = (buf, x, equiv = _equiv) => {\n  for (let i = buf.length; i-- > 0; ) {\n    if (equiv(x, buf[i])) return i;\n  }\n  return -1;\n};\nexport {\n  find,\n  findIndex\n};\n","function findSequence(buf, needle, start = 0) {\n  const m = buf.length;\n  const n = needle.length;\n  const max = m - n;\n  if (!n || max < 0) return -1;\n  while (start < m) {\n    const idx = buf.indexOf(needle[0], start);\n    if (idx < 0 || idx > max) return -1;\n    let j = n;\n    while (j-- > 1) {\n      if (buf[idx + j] !== needle[j]) {\n        start = idx + 1;\n        break;\n      }\n    }\n    if (j === 0) return idx;\n  }\n  return -1;\n}\nfunction findLastSequence(buf, needle, start = buf.length - 1) {\n  const m = buf.length;\n  const n = needle.length;\n  if (!n || n > m) return -1;\n  start = Math.min(start, m - n);\n  let j;\n  for (let i = start; i >= 0; i--) {\n    for (j = n; j-- > 0; ) {\n      if (buf[i + j] !== needle[j]) break;\n    }\n    if (j < 0) return i;\n  }\n  return -1;\n}\nexport {\n  findLastSequence,\n  findSequence\n};\n","import { compare } from \"@thi.ng/compare/compare\";\nimport { swap } from \"./swap.js\";\nfunction floydRivest(buf, k = 1, cmp = compare, left = 0, right = buf.length - 1) {\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const i2 = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(z * (2 / 3));\n      const sd = 0.5 * Math.sqrt(z * s * ((n - s) / n)) * Math.sign(i2 - n / 2);\n      floydRivest(\n        buf,\n        k,\n        cmp,\n        Math.max(left, k - i2 * s / n + sd | 0),\n        Math.min(right, k + (n - i2) * s / n + sd | 0)\n      );\n    }\n    const t = buf[k];\n    let i = left;\n    let j = right;\n    swap(buf, left, k);\n    if (cmp(buf[right], t) > 0) swap(buf, right, left);\n    while (i < j) {\n      swap(buf, i, j);\n      i++;\n      j--;\n      while (compare(buf[i], t) < 0) i++;\n      while (compare(buf[j], t) > 0) j--;\n    }\n    if (compare(buf[left], t) === 0) {\n      swap(buf, left, j);\n    } else {\n      j++;\n      swap(buf, j, right);\n    }\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n  return buf;\n}\nexport {\n  floydRivest\n};\n","import { equiv as _eq } from \"@thi.ng/equiv\";\nconst fuzzyMatch = (domain, query, equiv = _eq) => {\n  const nd = domain.length;\n  const nq = query.length;\n  if (nq > nd) {\n    return false;\n  }\n  if (nq === nd) {\n    return equiv(query, domain);\n  }\n  next: for (let i = 0, j = 0; i < nq; i++) {\n    const q = query[i];\n    while (j < nd) {\n      if (equiv(domain[j++], q)) {\n        continue next;\n      }\n    }\n    return false;\n  }\n  return true;\n};\nexport {\n  fuzzyMatch\n};\n","import { compare } from \"@thi.ng/compare/compare\";\nconst isSorted = (arr, cmp = compare, start = 0, end = arr.length) => {\n  let prev = arr[start];\n  while (++start < end) {\n    const curr = arr[start];\n    if (cmp(prev, curr) > 0) return false;\n    prev = curr;\n  }\n  return true;\n};\nexport {\n  isSorted\n};\n","const insert = (buf, x, i, k = Infinity) => i < 0 || i >= k || k < 1 ? buf : insertUnsafe(buf, x, i, k);\nconst insertUnsafe = (buf, x, i, k = Infinity) => {\n  let j = buf.length < k ? buf.length + 1 : k;\n  for (; --j > i; ) buf[j] = buf[j - 1];\n  buf[i] = x;\n  return buf;\n};\nexport {\n  insert,\n  insertUnsafe\n};\n","const into = (dest, src, max = Infinity) => {\n  for (const x of src) {\n    if (--max < 0) break;\n    dest.push(x);\n  }\n  return dest;\n};\nexport {\n  into\n};\n","function* arrayIterator(buf, start = 0, end) {\n  if (!buf) return;\n  end === void 0 && (end = buf.length);\n  const step = start <= end ? 1 : -1;\n  for (; start !== end; start += step) {\n    yield buf[start];\n  }\n}\nexport {\n  arrayIterator\n};\n","const __eqStrict = (a, b) => a === b;\nconst levenshtein = (a, b, maxDist = Infinity, equiv = __eqStrict) => {\n  if (a === b) {\n    return 0;\n  }\n  if (a.length > b.length) {\n    const tmp = a;\n    a = b;\n    b = tmp;\n  }\n  let la = a.length;\n  let lb = b.length;\n  while (la > 0 && equiv(a[~-la], b[~-lb])) {\n    la--;\n    lb--;\n  }\n  let offset = 0;\n  while (offset < la && equiv(a[offset], b[offset])) {\n    offset++;\n  }\n  la -= offset;\n  lb -= offset;\n  if (la === 0 || lb < 3) {\n    return lb;\n  }\n  let x = 0;\n  let y;\n  let minDist;\n  let d0;\n  let d1;\n  let d2;\n  let d3;\n  let dd;\n  let dy;\n  let ay;\n  let bx0;\n  let bx1;\n  let bx2;\n  let bx3;\n  const _min = (d02, d12, d22, bx, ay2) => {\n    return d02 < d12 || d22 < d12 ? d02 > d22 ? d22 + 1 : d02 + 1 : equiv(ay2, bx) ? d12 : d12 + 1;\n  };\n  const vector = [];\n  for (y = 0; y < la; y++) {\n    vector.push(y + 1, a[offset + y]);\n  }\n  const len = vector.length - 1;\n  const lb3 = lb - 3;\n  for (; x < lb3; ) {\n    bx0 = b[offset + (d0 = x)];\n    bx1 = b[offset + (d1 = x + 1)];\n    bx2 = b[offset + (d2 = x + 2)];\n    bx3 = b[offset + (d3 = x + 3)];\n    dd = x += 4;\n    minDist = Infinity;\n    for (y = 0; y < len; y += 2) {\n      dy = vector[y];\n      ay = vector[y + 1];\n      d0 = _min(dy, d0, d1, bx0, ay);\n      d1 = _min(d0, d1, d2, bx1, ay);\n      d2 = _min(d1, d2, d3, bx2, ay);\n      dd = _min(d2, d3, dd, bx3, ay);\n      dd < minDist && (minDist = dd);\n      vector[y] = dd;\n      d3 = d2;\n      d2 = d1;\n      d1 = d0;\n      d0 = dy;\n    }\n    if (minDist > maxDist) return Infinity;\n  }\n  for (; x < lb; ) {\n    bx0 = b[offset + (d0 = x)];\n    dd = ++x;\n    minDist = Infinity;\n    for (y = 0; y < len; y += 2) {\n      dy = vector[y];\n      vector[y] = dd = _min(dy, d0, dd, bx0, vector[y + 1]);\n      dd < minDist && (minDist = dd);\n      d0 = dy;\n    }\n    if (minDist > maxDist) return Infinity;\n  }\n  return dd;\n};\nconst normalizedLevenshtein = (a, b, maxDist = Infinity, equiv = __eqStrict) => {\n  const n = Math.max(a.length, b.length);\n  return n > 0 ? levenshtein(a, b, maxDist, equiv) / n : 0;\n};\nexport {\n  levenshtein,\n  normalizedLevenshtein\n};\n","import { ensureIndex } from \"@thi.ng/errors/out-of-bounds\";\nconst lookup = (table, ids) => ids.map((i) => (ensureIndex(i, 0, table.length), table[i]));\nconst lookupUnsafe = (table, ids) => ids.map((i) => table[i]);\nexport {\n  lookup,\n  lookupUnsafe\n};\n","const first = (buf) => buf[0];\nconst peek = (buf) => buf[buf.length - 1];\nexport {\n  first,\n  peek\n};\n","import { assert } from \"@thi.ng/errors/assert\";\nimport { SYSTEM } from \"@thi.ng/random/system\";\nconst shuffleRange = (buf, start = 0, end = buf.length, rnd = SYSTEM) => {\n  assert(\n    start >= 0 && end >= start && end <= buf.length,\n    `illegal range ${start}..${end}`\n  );\n  while (end > start + 1) {\n    const i = rnd.minmax(start, end) | 0;\n    const t = buf[i];\n    buf[i] = buf[--end];\n    buf[end] = t;\n  }\n  return buf;\n};\nconst shuffle = (buf, n = buf.length, rnd = SYSTEM) => shuffleRange(buf, 0, n, rnd);\nexport {\n  shuffle,\n  shuffleRange\n};\n","import { isNumber } from \"@thi.ng/checks/is-number\";\nimport { fillRange } from \"./fill-range.js\";\nimport { shuffle } from \"./shuffle.js\";\nfunction permutation(buf, rnd) {\n  return shuffle(\n    fillRange(isNumber(buf) ? new Array(buf) : buf),\n    void 0,\n    rnd\n  );\n}\nexport {\n  permutation\n};\n","const rotate = (buf, num) => {\n  if (!(num = __distance(buf, num))) return buf;\n  if (num < 0) {\n    buf.push(...buf.splice(0, -num));\n  } else {\n    buf.unshift(...buf.splice(-num));\n  }\n  return buf;\n};\nconst rotateTyped = (buf, num) => {\n  if (!(num = __distance(buf, num))) return buf;\n  if (num < 0) {\n    const tmp = buf.slice(0, -num);\n    buf.copyWithin(0, -num);\n    buf.set(tmp, buf.length + num);\n  } else if (num > 0) {\n    const tmp = buf.slice(buf.length - num);\n    buf.copyWithin(num, 0);\n    buf.set(tmp, 0);\n  }\n  return buf;\n};\nconst __distance = (buf, num) => buf.length ? (num | 0) % buf.length : 0;\nexport {\n  rotate,\n  rotateTyped\n};\n","import { equiv as _eq } from \"@thi.ng/equiv\";\nconst startsWith = (buf, needle, equiv = _eq) => {\n  let i = buf.length;\n  let j = needle.length;\n  if (i < j) return false;\n  while (-j >= 0 && equiv(buf[j], needle[j])) {\n  }\n  return j < 0;\n};\nexport {\n  startsWith\n};\n","const swizzle = (order) => {\n  const [a, b, c, d, e, f, g, h] = order;\n  switch (order.length) {\n    case 0:\n      return () => [];\n    case 1:\n      return (x) => [x[a]];\n    case 2:\n      return (x) => [x[a], x[b]];\n    case 3:\n      return (x) => [x[a], x[b], x[c]];\n    case 4:\n      return (x) => [x[a], x[b], x[c], x[d]];\n    case 5:\n      return (x) => [x[a], x[b], x[c], x[d], x[e]];\n    case 6:\n      return (x) => [x[a], x[b], x[c], x[d], x[e], x[f]];\n    case 7:\n      return (x) => [x[a], x[b], x[c], x[d], x[e], x[f], x[g]];\n    case 8:\n      return (x) => [x[a], x[b], x[c], x[d], x[e], x[f], x[g], x[h]];\n    default:\n      return (x) => {\n        let n = order.length;\n        const res = new Array(n);\n        for (; n-- > 0; ) res[n] = x[order[n]];\n        return res;\n      };\n  }\n};\nexport {\n  swizzle\n};\n","const selectThresholdMin = (thresholds, defaultVal) => {\n  const $thresholds = Object.entries(thresholds).map(([k, v]) => [+k, v]).sort((a, b) => a[0] - b[0]);\n  return (x) => {\n    const res = $thresholds.find((t) => x <= t[0]);\n    return res ? res[1] : defaultVal;\n  };\n};\nconst selectThresholdMax = (thresholds, defaultVal) => {\n  const $thresholds = Object.entries(thresholds).map(([k, v]) => [+k, v]).sort((a, b) => b[0] - a[0]);\n  return (x) => {\n    const res = $thresholds.find((t) => x >= t[0]);\n    return res ? res[1] : defaultVal;\n  };\n};\nexport {\n  selectThresholdMax,\n  selectThresholdMin\n};\n","import { assert } from \"@thi.ng/errors/assert\";\nconst topoSort = (nodes, deps) => {\n  const cycles = {};\n  const topology = [];\n  const sort = (id, path) => {\n    assert(nodes[id] != null, `missing node: ${id}`);\n    assert(!cycles[id], `dependency cycle: ${path.join(\" -> \")}`);\n    cycles[id] = true;\n    const nodeDeps = deps(nodes[id], id);\n    if (nodeDeps) {\n      for (const d of nodeDeps) sort(d, [...path, d]);\n    }\n    cycles[id] = false;\n    if (!topology.includes(id)) topology.push(id);\n  };\n  for (const id in nodes) sort(id, [id]);\n  return topology;\n};\nexport {\n  topoSort\n};\n"]}