{"version":3,"file":"static/js/main.05cf82ce.js","mappings":"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C5B+L,EAAK,IAAI/L,MAAM,IACfge,EAAU,GACVpkB,EAAU,EACVyT,EAAU,EAEV3T,EAAM,IAAIsG,MAAM,IAChBrB,EAAM,IAAIqB,MAAM,IAChBsH,EAAM,IAAItH,MAAM,IAChBiyB,EAAM,IAAIjyB,MAAM,KAChB0b,EAAgB,IAAI1b,MAAM,MAG1Bse,EAAS,CACX,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGE5f,EAA2B,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEEmc,EAA0B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC7Dy7D,EAA2B,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAEE9sD,EAA0B,CAC5B,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,EACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGExiB,EAA6B,CAC/B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEEuiB,EAA4B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC/DnK,EAA6B,CAC/B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAEEZ,EAA4B,CAC9B,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,GACA,IACA,EACA,GACA,GACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,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,GAAfjS,EAAGiS,IACvBA,IAAA,GAGa,GAAXA,EAAA,OACFgU,EAAUhZ,GACHD,EAAA,QAGLnf,EADAyT,EAAI,EAEDA,GAAK2Q,GAAS,SACftkB,EAAW2T,EACC,GAATtB,EAAGsB,IAAWA,GAAK2Q,KACtB3Q,EAAA,IAEA1O,EAAW0O,EAAI3T,EAAA,GACfiF,GApCI,GAoCa,CACnB/E,EAAM+E,GAAY,MACb,IAAI2I,EAAW,EAAGA,GAAY1N,IAAO0N,EACxC0qB,EAAU1lB,GACZ3N,GAAsB,GAExBF,EAAM,MAAQsN,EAAGsB,GACjB2kB,EAAUv5B,GAAMkG,GAAY,GAAKwa,EAAS1a,KAC1CuzB,EAAUzmB,EAAQ9M,IAClB4O,GAAA,QA5CQ,IA8CN2Q,GACFgU,EAAUhZ,GAELD,CAAA,UA8HAhR,EAAWR,GAClBA,EAAU/K,KAAKC,IAAID,KAAK6C,IAAIkI,EAAS,GAAI,KAErC9I,GAAkB8I,IAAA,SA1qBCA,GAAA,QACnB5J,EAAM,CACR,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IAGOob,EAAI,EAAGA,EAAI,GAAIA,IAAK,KACvBpf,EAAIqf,GAAQrb,EAAIob,GAAKxR,EAAK,IAAM,KACpC5N,EAAI6C,KAAKC,IAAID,KAAK6C,IAAI1F,EAAG,GAAI,KAC7B2S,EAAOgS,EAAOvF,IAAMpf,CAAA,SAElBlB,EAAO,CACT,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA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,EAAEm+N,GAE1B/nO,GADAA,GAAKwb,GAAK5N,EAAI,GAAKpP,GAAKoL,EAAEk+N,IACjBp7N,GAAK2O,EAAMhN,GAAK7P,EAAMgd,GAAKhd,EACpCwB,GAAK,MAAQ4J,EAAE5I,EACfhB,GAAK,MAAQ4J,EAAE4R,EACfxb,GAAK,MAAQ4J,EAAEssC,GAAA,IACTp7C,IAAOkF,GAAKyZ,GAAK4B,EAAKrb,GAAKoO,GAAKxE,EAAEu1I,GAAMn/I,GAAK,MAAQ4J,EAAE6X,EAAA,MAE5DzhB,EAAI,EACT4J,EAAI5J,EAAI,EAAI,UAGZ,GAAK4J,GAAA,MACDwR,GAAKA,EAAEmlI,KAAO32I,EAAI+mN,GAAG30N,IADV4N,CAAA,KAIjB6mN,GAAK,GACPvS,GAAK,CACH,EACA,EACA,EACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,UAEFwS,GAAK,GACL6W,GAAK,GACLC,GAAK,EACLC,GAAK,CACH,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,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,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,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,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,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,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,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,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,EACA,EACA,EACA,GAEJ7pL,EAAE,aAAc,iBAChBh0C,EAAKmiO,WAAa,kBACT,YAETniO,EAAKoiO,WAAa,SAASpiO,GAAA,OAClBA,CAAA,EAETA,EAAKqiO,WAAa,SAASriO,EAAG5J,EAAGob,GAAA,OACxBpb,EAAEob,EAAI,IAEfxR,EAAKsiO,WAAa,SAAStiO,EAAG5J,EAAGob,GAAA,OACxBpb,EAAEob,EAAI,IAEfxR,EAAKuiO,WAAa,SAASviO,EAAG5J,EAAGob,GAAA,OACxBpb,EAAEob,EAAI,IAEfxR,EAAKwiO,WAAa,SAASxiO,EAAG5J,EAAGob,GAAA,OACxBklB,EAAGA,EAAG12B,EAAG5J,EAAEob,EAAI,IAAKpb,EAAEob,EAAI,KAEnCxR,EAAKyiO,WAAa,SAASziO,EAAG5J,EAAGob,GAAA,OACxBklB,EAAG12B,EAAG5J,EAAEob,EAAI,KAErBxR,EAAK0iO,WAAa,SAAS1iO,EAAG5J,EAAGob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GAAIhB,GACJkB,GAAIrB,GACJzB,GAAK,EACLX,GAAK,EACLc,GAAK,EACLb,GAAK,EACLJ,GAAK,EACLK,GAAK,EACLgB,GAAK,EACL7B,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,GACLqC,GAAK,CAAC,EAAG,EAAG,GACZD,GAAK,CAAC,EAAG,EAAG,IACZF,GAAK,CAAC,IAAK,IAAK,IAAK,IAAK,IAC1BI,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,GAClBH,GAAK,CAAC,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IACpEvB,GAAK,CACH,GACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,KAEFqB,GAAK,CACH,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFjvE,GAAK,EACLvB,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFoB,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFN,GAAK,KACLN,GAAK,CACH,CAAC,IAAK,IAAK,IAAK,GAChB,CAAC,IAAK,IAAK,IAAK,IAAK,GACrB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAC1B,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAE1Db,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IACxDsB,GAAK,EAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GACnEK,GAAK,CACH,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/C,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/C,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGrD,CACE,CACE,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpD,CACE,CAAC,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClD,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAEnD,CACE,CAAC,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/C,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACjD,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,QAIvDzB,GAAK,CACH,CACE,CAAC,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KACvC,CAAC,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IACtC,CAAC,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,KACpC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACpC,CAAC,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACpC,CAAC,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IACnC,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IACrC,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IACrC,CAAC,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,KAClC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,KAEpC,CACE,CAAC,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,KACvC,CAAC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IACtC,CAAC,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,KACpC,CAAC,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,KAClC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACnC,CAAC,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,KACpC,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GACpC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IACnC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACpC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KAEtC,CACE,CAAC,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,KACpC,CAAC,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IACpC,CAAC,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,KACnC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IACpC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IACnC,CAAC,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IACpC,CAAC,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IACjC,CAAC,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,KACpC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACpC,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAEnC,CACE,CAAC,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACtC,CAAC,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACrC,CAAC,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,KACtC,CAAC,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,KACnC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACpC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,KACjC,CAAC,IAAK,GAAI,EAAG,GAAI,IAAK,EAAG,GAAI,GAAI,IACjC,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,KACrC,CAAC,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,KACjC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KAEtC,CACE,CAAC,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACpC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACnC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACnC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACpC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACnC,CAAC,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,GAAI,KACjC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IACjC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,KACpC,CAAC,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,KAChC,CAAC,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,KAEnC,CACE,CAAC,IAAK,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,KACnC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAClC,CAAC,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,KACnC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACpC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACnC,CAAC,GAAI,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,IAAK,IAChC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IACpC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IACnC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACnC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,EAAG,GAAI,KAEpC,CACE,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IACrC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IACrC,CAAC,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GACpC,CAAC,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,IACjC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,IACjC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,KACnC,CAAC,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GACpC,CAAC,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACrC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IACpC,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,KAErC,CACE,CAAC,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KACnC,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IACnC,CAAC,GAAI,GAAI,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,KAClC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAClC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GACrC,CAAC,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAClC,CAAC,GAAI,GAAI,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAClC,CAAC,GAAI,EAAG,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GACjC,CAAC,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KACpC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,KAErC,CACE,CAAC,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACrC,CAAC,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KACpC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KACrC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KACnC,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,EAAG,KAChC,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,KACpC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IACnC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,KACpC,CAAC,GAAI,GAAI,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,KAChC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,MAEtC,CACE,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IACpC,CAAC,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IACnC,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACxC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,IAClC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACpC,CAAC,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,KACnC,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IACpC,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,IAAK,IACnC,CAAC,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,KACpC,CAAC,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,MAGvC2B,GAAK,CACH,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,K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EAAc8O,EAAQ+tO,cACtBt8N,EAAezR,EAAQguO,eACvB92O,EAAW8I,EAAQiuO,WACnBlpO,EAAY/E,EAAQkuO,YACpBt5O,EAAuBoL,EAAQmuO,oBAAA,OAI9BT,eAAepnN,WAAWtmB,GACxB9Q,KAAKw+O,cAAA,MAGVt3O,EA5jFmB,CACrB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,MACA,IACA,MACA,MACA,IACA,MACA,MACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KA8jBEob,EAAa,IAAIxR,EAAM0tO,eAAe,CAAEK,eAAA,IAoC5C/tO,EAAM+8M,IAAIh+K,OAAO1qC,KAAK,CAAC,kBAlCE,SAAS2L,GAAA,IAC5B5J,EAAO4J,EAAKsjB,KAGZlxB,GAFI4N,EAAK7I,EACL6I,EAAK5I,EACC4I,EAAKyN,SAAW,CAAC,GAG3Bvc,GAFQ8O,EAAKohN,MACNhvN,EAAQovB,KACL,OAEdpvB,EAAQ27O,cAC2B,kBAA1B37O,EAAQ27O,eAA8B37O,EAAQ27O,cACvDv8N,EAAW8U,WAAWl0B,GAEuB,mBAAzCsE,OAAO3H,UAAUoC,SAASwB,KAAKyD,GAA4B,KACzDc,EAAI,MACR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","sources":["../node_modules/@aws-amplify/auth/node_modules/buffer/index.js","../node_modules/@aws-amplify/auth/node_modules/isarray/index.js","../node_modules/@aws-amplify/auth/node_modules/punycode/punycode.js","../node_modules/@aws-amplify/auth/node_modules/url/url.js","../node_modules/@aws-amplify/auth/node_modules/url/util.js","../node_modules/@aws-amplify/ui-react/node_modules/classnames/index.js","../node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/@aws-crypto/sha256-js/src/index.ts","../node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@aws-crypto/util/src/index.ts","../node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/@aws-sdk/util-utf8-browser/src/index.ts","../node_modules/@aws-sdk/util-utf8-browser/src/whatwgEncodingApi.ts","../node_modules/@aws-sdk/util-utf8-browser/src/pureJs.ts","../node_modules/amazon-cognito-identity-js/node_modules/buffer/index.js","../node_modules/amazon-cognito-identity-js/node_modules/isarray/index.js","../node_modules/base64-js/index.js","../node_modules/camel-case/node_modules/tslib/tslib.es6.js","../node_modules/pascal-case/node_modules/tslib/tslib.es6.js","../node_modules/lower-case/src/index.ts","../node_modules/no-case/src/index.ts","../node_modules/pascal-case/src/index.ts","../node_modules/camel-case/src/index.ts","../node_modules/capital-case/node_modules/tslib/tslib.es6.mjs","../node_modules/upper-case-first/src/index.ts","../node_modules/capital-case/src/index.ts","../node_modules/constant-case/node_modules/tslib/tslib.es6.mjs","../node_modules/upper-case/src/index.ts","../node_modules/constant-case/src/index.ts","../node_modules/dot-case/node_modules/tslib/tslib.es6.js","../node_modules/dot-case/src/index.ts","../node_modules/header-case/node_modules/tslib/tslib.es6.mjs","../node_modules/header-case/src/index.ts","../node_modules/param-case/node_modules/tslib/tslib.es6.js","../node_modules/param-case/src/index.ts","../node_modules/path-case/node_modules/tslib/tslib.es6.mjs","../node_modules/path-case/src/index.ts","../node_modules/sentence-case/node_modules/tslib/tslib.es6.mjs","../node_modules/sentence-case/src/index.ts","../node_modules/snake-case/node_modules/tslib/tslib.es6.mjs","../node_modules/snake-case/src/index.ts","../node_modules/classnames/index.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/encode-utf8/index.js","../../../../../../webpack/universalModuleDefinition","../../../../../../webpack/bootstrap 06abc0fd1cd6e6cc78b4","../../../../../../highcharts-react.min.js","../../../../../../src/HighchartsReact.js","../../../../../../external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}","../node_modules/highcharts/highcharts.src.js","../node_modules/highcharts/modules/exporting.src.js","../node_modules/html2canvas/node_modules/tslib/tslib.es6.js","../node_modules/html2canvas/node_modules/src/Util.ts","../node_modules/src/css/layout/bounds.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Util.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts","../node_modules/html2canvas/node_modules/src/linebreak-trie.ts","../node_modules/html2canvas/node_modules/src/LineBreak.ts","../node_modules/src/css/syntax/tokenizer.ts","../node_modules/src/css/syntax/parser.ts","../node_modules/src/css/types/length.ts","../node_modules/src/css/types/length-percentage.ts","../node_modules/src/css/types/angle.ts","../node_modules/src/css/types/color.ts","../node_modules/src/css/property-descriptors/background-clip.ts","../node_modules/src/css/property-descriptors/background-color.ts","../node_modules/src/css/types/functions/gradient.ts","../node_modules/src/css/types/functions/-prefix-linear-gradient.ts","../node_modules/src/css/types/functions/radial-gradient.ts","../node_modules/src/css/types/functions/-prefix-radial-gradient.ts","../node_modules/src/css/types/image.ts","../node_modules/src/css/property-descriptors/background-size.ts","../node_modules/src/css/types/functions/linear-gradient.ts","../node_modules/src/css/types/functions/-webkit-gradient.ts","../node_modules/src/css/property-descriptors/background-image.ts","../node_modules/src/css/property-descriptors/background-origin.ts","../node_modules/src/css/property-descriptors/background-position.ts","../node_modules/src/css/property-descriptors/background-repeat.ts","../node_modules/src/css/property-descriptors/line-break.ts","../node_modules/src/css/property-descriptors/border-color.ts","../node_modules/src/css/property-descriptors/border-radius.ts","../node_modules/src/css/property-descriptors/border-style.ts","../node_modules/src/css/property-descriptors/border-width.ts","../node_modules/src/css/property-descriptors/color.ts","../node_modules/src/css/property-descriptors/direction.ts","../node_modules/src/css/property-descriptors/display.ts","../node_modules/src/css/property-descriptors/float.ts","../node_modules/src/css/property-descriptors/letter-spacing.ts","../node_modules/src/css/property-descriptors/word-break.ts","../node_modules/src/css/property-descriptors/line-height.ts","../node_modules/src/css/property-descriptors/list-style-image.ts","../node_modules/src/css/property-descriptors/list-style-position.ts","../node_modules/src/css/property-descriptors/list-style-type.ts","../node_modules/src/css/property-descriptors/margin.ts","../node_modules/src/css/property-descriptors/overflow.ts","../node_modules/src/css/property-descriptors/overflow-wrap.ts","../node_modules/src/css/property-descriptors/padding.ts","../node_modules/src/css/property-descriptors/text-align.ts","../node_modules/src/css/property-descriptors/position.ts","../node_modules/src/css/property-descriptors/text-shadow.ts","../node_modules/src/css/property-descriptors/text-transform.ts","../node_modules/src/css/property-descriptors/transform.ts","../node_modules/src/css/property-descriptors/transform-origin.ts","../node_modules/src/css/property-descriptors/visibility.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts","../node_modules/src/css/property-descriptors/z-index.ts","../node_modules/src/css/types/time.ts","../node_modules/src/css/property-descriptors/opacity.ts","../node_modules/src/css/property-descriptors/text-decoration-color.ts","../node_modules/src/css/property-descriptors/text-decoration-line.ts","../node_modules/src/css/property-descriptors/font-family.ts","../node_modules/src/css/property-descriptors/font-size.ts","../node_modules/src/css/property-descriptors/font-weight.ts","../node_modules/src/css/property-descriptors/font-variant.ts","../node_modules/src/css/property-descriptors/font-style.ts","../node_modules/src/core/bitwise.ts","../node_modules/src/css/property-descriptors/content.ts","../node_modules/src/css/property-descriptors/counter-increment.ts","../node_modules/src/css/property-descriptors/counter-reset.ts","../node_modules/src/css/property-descriptors/duration.ts","../node_modules/src/css/property-descriptors/quotes.ts","../node_modules/src/css/property-descriptors/box-shadow.ts","../node_modules/src/css/property-descriptors/paint-order.ts","../node_modules/src/css/property-descriptors/webkit-text-stroke-color.ts","../node_modules/src/css/property-descriptors/webkit-text-stroke-width.ts","../node_modules/src/css/index.ts","../node_modules/src/core/debugger.ts","../node_modules/src/dom/element-container.ts","../node_modules/html2canvas/node_modules/src/grapheme-break-trie.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts","../node_modules/html2canvas/node_modules/src/GraphemeBreak.ts","../node_modules/src/dom/document-cloner.ts","../node_modules/src/core/features.ts","../node_modules/src/css/layout/text.ts","../node_modules/src/dom/text-container.ts","../node_modules/src/dom/replaced-elements/image-element-container.ts","../node_modules/src/dom/replaced-elements/canvas-element-container.ts","../node_modules/src/dom/replaced-elements/svg-element-container.ts","../node_modules/src/dom/elements/li-element-container.ts","../node_modules/src/dom/elements/ol-element-container.ts","../node_modules/src/dom/replaced-elements/input-element-container.ts","../node_modules/src/dom/elements/select-element-container.ts","../node_modules/src/dom/elements/textarea-element-container.ts","../node_modules/src/dom/replaced-elements/iframe-element-container.ts","../node_modules/src/dom/node-parser.ts","../node_modules/src/css/types/functions/counter.ts","../node_modules/src/render/bound-curves.ts","../node_modules/src/core/cache-storage.ts","../node_modules/src/render/vector.ts","../node_modules/src/render/bezier-curve.ts","../node_modules/src/render/effects.ts","../node_modules/src/render/path.ts","../node_modules/src/render/stacking-context.ts","../node_modules/src/render/border.ts","../node_modules/src/render/box-sizing.ts","../node_modules/src/render/background.ts","../node_modules/src/core/util.ts","../node_modules/src/render/font-metrics.ts","../node_modules/src/render/renderer.ts","../node_modules/src/render/canvas/canvas-renderer.ts","../node_modules/src/render/canvas/foreignobject-renderer.ts","../node_modules/src/core/logger.ts","../node_modules/src/core/context.ts","../node_modules/src/index.ts","../node_modules/ieee754/index.js","../node_modules/isomorphic-unfetch/browser.js","../node_modules/js-cookie/src/js.cookie.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseMerge.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/_basePickBy.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_baseSet.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_root.js","../node_modules/lodash/_safeGet.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/constant.js","../node_modules/lodash/deburr.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/kebabCase.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/memoize.js","../node_modules/lodash/merge.js","../node_modules/lodash/pickBy.js","../node_modules/lodash/property.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/toString.js","../node_modules/lodash/words.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/qrcode/lib/browser.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/qrcode/lib/core/format-info.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/qrcode/lib/core/mode.js","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/qrcode/lib/core/utils.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/qrcode/lib/core/version.js","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-dictionary/lib/utils/deepExtend.js","../node_modules/style-dictionary/lib/utils/es6_.js","../node_modules/style-dictionary/lib/utils/flattenProperties.js","../node_modules/style-dictionary/lib/utils/references/createReferenceRegex.js","../node_modules/style-dictionary/lib/utils/references/defaults.js","../node_modules/style-dictionary/lib/utils/references/usesReference.js","../node_modules/tslib/tslib.es6.js","../node_modules/unfetch/src/index.mjs","../node_modules/universal-cookie/node_modules/cookie/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/xstate/lib/_virtual/_tslib.js","../node_modules/xstate/lib/waitFor.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router/index.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","context/ResultsContext.jsx","context/SubmissionFormContext.jsx","context/OverlayContext.jsx","../node_modules/fflate/esm/browser.js","../node_modules/jspdf/src/libs/globalObject.js","../node_modules/jspdf/src/libs/console.js","../node_modules/jspdf/src/libs/FileSaver.js","../node_modules/jspdf/src/libs/AtobBtoa.js","../node_modules/jspdf/src/libs/rgbcolor.js","../node_modules/jspdf/src/libs/md5.js","../node_modules/jspdf/src/libs/rc4.js","../node_modules/jspdf/src/libs/pdfsecurity.js","../node_modules/jspdf/src/libs/pdfname.js","../node_modules/jspdf/src/jspdf.js","../node_modules/jspdf/src/modules/acroform.js","../node_modules/jspdf/src/libs/fontFace.js","../node_modules/jspdf/src/modules/addimage.js","../node_modules/jspdf/src/modules/annotations.js","../node_modules/jspdf/src/modules/arabic.js","../node_modules/jspdf/src/modules/autoprint.js","../node_modules/jspdf/src/modules/canvas.js","../node_modules/jspdf/src/modules/cell.js","../node_modules/jspdf/src/modules/javascript.js","../node_modules/jspdf/src/modules/context2d.js","../node_modules/jspdf/src/modules/filters.js","../node_modules/jspdf/src/modules/fileloading.js","../node_modules/jspdf/src/modules/html.js","../node_modules/jspdf/src/modules/outline.js","../node_modules/jspdf/src/modules/jpeg_support.js","../node_modules/jspdf/src/libs/png.js","../node_modules/jspdf/src/modules/split_text_to_size.js","../node_modules/jspdf/src/libs/omggif.js","../node_modules/jspdf/src/libs/JPEGEncoder.js","../node_modules/jspdf/src/libs/BMPDecoder.js","../node_modules/jspdf/src/libs/WebPDecoder.js","../node_modules/jspdf/src/modules/png_support.js","../node_modules/jspdf/src/modules/gif_support.js","../node_modules/jspdf/src/modules/bmp_support.js","../node_modules/jspdf/src/modules/webp_support.js","../node_modules/jspdf/src/modules/rgba_support.js","../node_modules/jspdf/src/modules/setlanguage.js","../node_modules/jspdf/src/modules/standard_fonts_metrics.js","../node_modules/jspdf/src/modules/ttfsupport.js","../node_modules/jspdf/src/modules/svg.js","../node_modules/jspdf/src/modules/total_pages.js","../node_modules/jspdf/src/modules/viewerpreferences.js","../node_modules/jspdf/src/modules/xmp_metadata.js","../node_modules/jspdf/src/modules/utf8.js","../node_modules/jspdf/src/modules/vfs.js","../node_modules/jspdf/src/libs/bidiEngine.js","../node_modules/jspdf/src/libs/ttffont.js","components/Navigation/NavBar/NavBar.jsx","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","context/ToastContext.jsx","components/Toast/Toast.jsx","context/FormContentBasic.js","../node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../node_modules/@fortawesome/react-fontawesome/index.es.js","../node_modules/@fortawesome/free-solid-svg-icons/index.mjs","components/GetQuote/HubspotContactForm.jsx","components/GetQuote/GetQuote.jsx","routes/Root.jsx","components/Loader/Loader.jsx","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/tippy.js/src/constants.ts","../node_modules/tippy.js/src/utils.ts","../node_modules/tippy.js/src/dom-utils.ts","../node_modules/tippy.js/src/bindGlobalEventListeners.ts","../node_modules/tippy.js/src/browser.ts","../node_modules/tippy.js/src/props.ts","../node_modules/tippy.js/src/template.ts","../node_modules/tippy.js/src/createTippy.ts","../node_modules/tippy.js/src/index.ts","../node_modules/tippy.js/src/addons/createSingleton.ts","../node_modules/tippy.js/build/base.js","../node_modules/@tippyjs/react/src/utils.js","../node_modules/@tippyjs/react/src/util-hooks.js","../node_modules/@tippyjs/react/src/className-plugin.js","../node_modules/@tippyjs/react/src/Tippy.js","../node_modules/@tippyjs/react/src/forwardRef.js","../node_modules/@tippyjs/react/src/index.js","components/Forms/FormInput/FormInput.jsx","components/ToggleSwitch/ToggleSwitch.jsx","components/Forms/FormToggleSwitch/FormToggleSwitch.jsx","components/Forms/SubmissionForm/SubmissionFormBasic.jsx","components/Forms/SubmissionForm/SubmissionForm.jsx","helpers/formCalculations.js","helpers/rounding.js","components/Charts/DischargeableEnergy.jsx","components/Results/ResultsServiceLife/ResultsServiceLife.jsx","../node_modules/rodal/lib/rodal.esm.js","components/ModalContent/ModalContent.jsx","components/Results/ResultsInitial/ResultsInitial.jsx","components/Results/ResultsOverview/ResultsOverview.jsx","components/Results/VisualizationIFrame/VisualizationIFrame.jsx","routes/FinalForm/FinalForm.jsx","components/Forms/AdminForm/BatteryForm.jsx","context/CurrentConfiguration.jsx","content/labels.js","components/Forms/AdminForm/EditAllForm.jsx","context/Battery1Defaults.jsx","../node_modules/@aws-amplify/core/lib-esm/Logger/ConsoleLogger.js","context/Battery2Defaults.jsx","../node_modules/@aws-amplify/core/lib-esm/Util/Constants.js","../node_modules/@aws-amplify/core/lib-esm/Amplify.js","../node_modules/@aws-amplify/ui/dist/esm/utils/index.mjs","../node_modules/@aws-amplify/ui/node_modules/tslib/tslib.es6.js","../node_modules/@aws-amplify/core/lib-esm/Hub.js","../node_modules/amazon-cognito-identity-js/es/utils/cryptoSecureRandomInt.web.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationDetails.js","../node_modules/amazon-cognito-identity-js/es/utils/WordArray.js","../node_modules/amazon-cognito-identity-js/es/BigInteger.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoJwtToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoAccessToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoIdToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoRefreshToken.js","../node_modules/amazon-cognito-identity-js/es/Platform/index.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserSession.js","../node_modules/amazon-cognito-identity-js/es/DateHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserAttribute.js","../node_modules/amazon-cognito-identity-js/es/StorageHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUser.js","../node_modules/amazon-cognito-identity-js/es/UserAgent.js","../node_modules/amazon-cognito-identity-js/es/Client.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserPool.js","../node_modules/amazon-cognito-identity-js/es/CookieStorage.js","../node_modules/@aws-amplify/ui/dist/esm/i18n/country-dial-codes.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/constants.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/actor.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/utils.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/node_modules/tslib/tslib.es6.mjs","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/@aws-amplify/ui-react-core/node_modules/@xstate/react/es/useActor.js","../node_modules/@aws-amplify/ui-react-core/node_modules/@xstate/react/es/useSelector.js","../node_modules/@aws-amplify/ui-react-core/node_modules/@xstate/react/es/utils.js","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/facade.mjs","../node_modules/@aws-amplify/auth/src/types/Auth.ts","../node_modules/@aws-amplify/ui-react-core/dist/esm/Authenticator/context/AuthenticatorContext.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/Authenticator/hooks/useAuthenticator/constants.mjs","../node_modules/@aws-amplify/core/lib-esm/StorageHelper/index.js","../node_modules/@aws-amplify/core/lib-esm/JS.js","../node_modules/@aws-amplify/core/lib-esm/Util/Retry.js","../node_modules/@aws-amplify/core/lib-esm/Platform/types.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/GoogleOAuth.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/FacebookOAuth.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/index.js","../node_modules/@aws-amplify/core/lib-esm/clients/endpoints/partitions.js","../node_modules/@aws-amplify/core/lib-esm/clients/endpoints/getDnsSuffix.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/middleware.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/userAgent/middleware.js","../node_modules/@aws-amplify/core/lib-esm/clients/internal/composeTransferHandler.js","../node_modules/@aws-amplify/core/lib-esm/clients/utils/memoization.js","../node_modules/@aws-amplify/core/lib-esm/clients/handlers/fetch.js","../node_modules/@aws-amplify/core/lib-esm/clients/handlers/unauthenticated.js","../node_modules/@aws-amplify/core/lib-esm/clients/serde/responseInfo.js","../node_modules/@aws-amplify/core/lib-esm/clients/serde/json.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/isClockSkewError.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/defaultRetryDecider.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/jitteredBackoff.js","../node_modules/@aws-amplify/core/lib-esm/Platform/version.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/helpers.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/index.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detectFramework.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Expo.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/ReactNative.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Next.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Nuxt.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Angular.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/React.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Vue.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Svelte.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Web.js","../node_modules/@aws-amplify/core/lib-esm/Platform/index.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/base.js","../node_modules/@aws-amplify/core/lib-esm/clients/internal/composeServiceApi.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/getId.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/getCredentialsForIdentity.js","../node_modules/@aws-amplify/core/lib-esm/parseAWSExports.js","../node_modules/@aws-amplify/core/lib-esm/Credentials.js","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../node_modules/universal-cookie/es6/index.js","../node_modules/@aws-amplify/core/lib-esm/UniversalStorage/index.js","../node_modules/@aws-amplify/auth/src/common/AuthErrorStrings.ts","../node_modules/@aws-amplify/auth/src/OAuth/urlOpener.ts","../node_modules/@aws-amplify/auth/src/OAuth/OAuth.ts","../node_modules/@aws-amplify/core/lib-esm/constants.js","../node_modules/@aws-amplify/core/lib-esm/Util/StringUtils.js","../node_modules/@aws-amplify/auth/src/OAuth/oauthStorage.ts","../node_modules/@aws-amplify/auth/src/Errors.ts","../node_modules/@aws-amplify/auth/src/Auth.ts","../node_modules/amazon-cognito-identity-js/es/Platform/constants.js","../node_modules/@aws-amplify/auth/src/urlListener.ts","../node_modules/@aws-amplify/ui/dist/esm/types/authenticator/attributes.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/context.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/form.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/formFields/defaults.mjs","../node_modules/@aws-amplify/core/lib-esm/I18n/I18n.js","../node_modules/@aws-amplify/core/lib-esm/I18n/index.js","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/index.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/de.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/en.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/es.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/fr.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/it.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/ja.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/kr.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/nb.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/nl.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/pl.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/pt.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/zh.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/sv.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/id.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/tr.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/ru.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/he.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/ua.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/dictionaries/authenticator/defaultTexts.mjs","../node_modules/@aws-amplify/ui/dist/esm/i18n/translations.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/formFields/formFields.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/formFields/util.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/Authenticator/hooks/constants.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/Authenticator/hooks/useAuthenticator/utils.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/Authenticator/hooks/utils.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/Authenticator/hooks/useAuthenticator/useAuthenticator.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/Authenticator/hooks/useAuthenticatorInitMachine/useAuthenticatorInitMachine.mjs","../node_modules/xstate/es/_virtual/_tslib.js","../node_modules/xstate/es/types.js","../node_modules/xstate/es/constants.js","../node_modules/xstate/es/utils.js","../node_modules/xstate/es/actionTypes.js","../node_modules/xstate/es/environment.js","../node_modules/xstate/es/stateUtils.js","../node_modules/xstate/es/actions.js","../node_modules/xstate/es/State.js","../node_modules/xstate/es/scheduler.js","../node_modules/xstate/es/serviceScope.js","../node_modules/xstate/es/Actor.js","../node_modules/xstate/es/registry.js","../node_modules/xstate/es/devTools.js","../node_modules/xstate/es/behaviors.js","../node_modules/xstate/es/interpreter.js","../node_modules/@aws-amplify/ui-react-core/node_modules/@xstate/react/es/useConstant.js","../node_modules/@aws-amplify/ui-react-core/node_modules/@xstate/react/es/useInterpret.js","../node_modules/xstate/es/invokeUtils.js","../node_modules/xstate/es/StateNode.js","../node_modules/xstate/es/Machine.js","../node_modules/xstate/es/index.js","../node_modules/@aws-amplify/ui/dist/esm/machines/authenticator/actions.mjs","../node_modules/@aws-amplify/ui/dist/esm/validators/index.mjs","../node_modules/@aws-amplify/ui/dist/esm/machines/authenticator/defaultServices.mjs","../node_modules/@aws-amplify/ui/dist/esm/machines/authenticator/actors/signIn.mjs","../node_modules/@aws-amplify/ui/dist/esm/machines/authenticator/actors/signOut.mjs","../node_modules/@aws-amplify/ui/dist/esm/machines/authenticator/index.mjs","../node_modules/@aws-amplify/ui/dist/esm/machines/authenticator/signUp.mjs","../node_modules/@aws-amplify/ui/dist/esm/machines/authenticator/actors/resetPassword.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/Authenticator/context/AuthenticatorProvider.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/version.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/hooks/useDeprecationWarning.mjs","../node_modules/@aws-amplify/ui-react-core/dist/esm/hooks/useDeprecationWarning.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/hooks/useCustomComponents/useCustomComponents.mjs","../node_modules/@aws-amplify/ui/dist/esm/helpers/authenticator/textUtil.mjs","../node_modules/@aws-amplify/ui-react/node_modules/tslib/tslib.es6.js","../node_modules/@aws-amplify/ui/dist/esm/types/primitives/componentClassName.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/shared/constants.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Fieldset/useFieldset.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/utils.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/types/style.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/borderWidths.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/colors.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/fileUploader.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/storagemanager.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/fontSizes.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/fontWeights.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/opacities.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/radii.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/space.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/time.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/defaultTheme.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/index.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/index.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/alert.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/authenticator.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/autocomplete.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/badge.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/breadcrumbs.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/button.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/card.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/checkbox.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/checkboxField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/collection.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/copy.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/dialCodeSelect.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/divider.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/dropZone.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/expander.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/field.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/fieldControl.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/fieldGroup.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/fieldMessages.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/fieldset.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/flex.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/heading.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/icon.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/highlightMatch.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/image.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/inAppMessaging.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/input.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/link.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/liveness.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/loader.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/menu.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/message.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/pagination.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/passwordField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/phoneNumberField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/placeholder.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/radio.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/radioGroup.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/rating.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/searchField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/select.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/selectField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/sliderField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/stepperField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/switchField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/table.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/tabs.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/text.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/textAreaField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/textField.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/toggleButton.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/components/toggleButtonGroup.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/fonts.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/lineHeights.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/outlineOffsets.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/outlineWidths.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/shadows.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/tokens/transforms.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/breakpoints.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/shared/utils.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/types/theme.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/shared/responsive/utils.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/shared/responsive/useBreakpoint.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/shared/responsive/getMediaQueries.mjs","../node_modules/@aws-amplify/ui/dist/esm/theme/createTheme.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/ThemeProvider/AmplifyContext.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/hooks/useTheme.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/shared/styleUtils.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/shared/getStyleValue.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/View/View.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Flex/Flex.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Loader/Loader.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Button/Button.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Heading/Heading.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Text/Text.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/helpers/utils.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/hooks/useFormHandlers/useFormHandlers.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/context/IconsContext.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/context/useIcons.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/icons/IconCheckCircle.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/icons/IconError.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/icons/IconInfo.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/icons/IconWarning.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Alert/AlertIcon.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/icons/IconClose.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Alert/Alert.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/shared/RemoteErrorMessage.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/VisuallyHidden/VisuallyHidden.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/icons/IconVisibilityOff.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/icons/IconVisibility.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/PasswordField/ShowPasswordButton.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Field/FieldDescription.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Field/FieldErrorMessage.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/FieldGroup/FieldGroup.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Input/Input.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Label/Label.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/utils/splitPrimitiveProps.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/utils/useLayoutEffect.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/utils/useStableId.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/TextField/TextField.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/PasswordField/PasswordField.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/icons/IconExpandMore.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Select/Select.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/SelectField/SelectField.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/PhoneNumberField/CountryCodeSelect.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/PhoneNumberField/PhoneNumberField.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/shared/ValidationErrors.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/shared/FormField.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/shared/FormFields.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/RouteContainer/RouteContainer.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/ConfirmSignUp/ConfirmSignUp.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/ForceNewPassword/ForceNewPassword.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/shared/ConfirmSignInFooter.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/SetupTOTP/SetupTOTP.mjs","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@radix-ui/primitive/dist/packages/core/primitive/src/primitive.tsx","../node_modules/@radix-ui/react-context/dist/packages/react/context/src/createContext.tsx","../node_modules/@radix-ui/react-compose-refs/dist/packages/react/compose-refs/src/composeRefs.tsx","../node_modules/@radix-ui/react-slot/dist/packages/react/slot/src/Slot.tsx","../node_modules/@radix-ui/react-use-layout-effect/dist/packages/react/use-layout-effect/src/useLayoutEffect.tsx","../node_modules/@radix-ui/react-id/dist/packages/react/id/src/id.tsx","../node_modules/@radix-ui/react-primitive/dist/packages/react/primitive/src/Primitive.tsx","../node_modules/@radix-ui/react-use-callback-ref/dist/packages/react/use-callback-ref/src/useCallbackRef.tsx","../node_modules/@radix-ui/react-use-controllable-state/dist/packages/react/use-controllable-state/src/useControllableState.tsx","../node_modules/@radix-ui/react-direction/dist/packages/react/direction/src/Direction.tsx","../node_modules/@radix-ui/react-roving-focus/dist/packages/react/roving-focus/src/RovingFocusGroup.tsx","../node_modules/@radix-ui/react-collection/dist/packages/react/collection/src/Collection.tsx","../node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/Presence.tsx","../node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/useStateMachine.tsx","../node_modules/@radix-ui/react-tabs/dist/packages/react/tabs/src/Tabs.tsx","../node_modules/@aws-amplify/ui/dist/esm/types/authenticator/user.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Tabs/Tabs.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Divider/Divider.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Icon/Icon.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/FederatedSignIn/FederatedSignInButtons/FederatedSignInButton.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/FederatedSignIn/FederatedSignIn.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/SignIn/SignIn.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/SignUp/SignUp.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/shared/SignInSignUpTabs.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/shared/TwoButtonSubmitFooter.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/VerifyUser/ConfirmVerifyUser.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/RadioGroupField/context.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/Radio/Radio.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/utils/getTestId.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/primitives/RadioGroupField/RadioGroupField.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/VerifyUser/VerifyUser.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/ConfirmSignIn/ConfirmSignIn.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/ResetPassword/ConfirmResetPassword.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/ResetPassword/ResetPassword.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/utils.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/Router/Router.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/hooks/useCustomComponents/defaultComponents.mjs","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/Authenticator.mjs","aws-exports.js","routes/AdminPanel/AdminPanel.jsx","../node_modules/@aws-amplify/ui-react/dist/esm/components/Authenticator/withAuthenticator.mjs","routes/Iframe/Iframe.jsx","reportWebVitals.js","error-page.jsx","index.js"],"sourcesContent":["/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import {\n BLOCK_SIZE,\n DIGEST_LENGTH,\n INIT,\n KEY,\n MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n private state: Int32Array = Int32Array.from(INIT);\n private temp: Int32Array = new Int32Array(64);\n private buffer: Uint8Array = new Uint8Array(64);\n private bufferLength: number = 0;\n private bytesHashed: number = 0;\n\n /**\n * @internal\n */\n finished: boolean = false;\n\n update(data: Uint8Array): void {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n digest(): Uint8Array {\n if (!this.finished) {\n const bitsHashed = this.bytesHashed * 8;\n const bufferView = new DataView(\n this.buffer.buffer,\n this.buffer.byteOffset,\n this.buffer.byteLength\n );\n\n const undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(\n BLOCK_SIZE - 8,\n Math.floor(bitsHashed / 0x100000000),\n true\n );\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n const out = new Uint8Array(DIGEST_LENGTH);\n for (let i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n\n return out;\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n } else {\n let u = this.temp[i - 2];\n const t1 =\n ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n u = this.temp[i - 15];\n const t2 =\n ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n this.temp[i] =\n ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n }\n\n const t1 =\n ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n\n const t2 =\n ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n }\n}\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","export * from \"./jsSha256\";\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Hash {\n private readonly hash = new RawSha256();\n private readonly outer?: RawSha256;\n private error: any;\n\n constructor(secret?: SourceData) {\n if (secret) {\n this.outer = new RawSha256();\n const inner = bufferFromSecret(secret);\n const outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // overwrite the copied key in memory\n for (let i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n }\n\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n digestSync(): Uint8Array {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n }\n\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n async digest(): Promise {\n return this.digestSync();\n }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n let input = convertToBuffer(secret);\n\n if (input.byteLength > BLOCK_SIZE) {\n const bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n const buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@aws-sdk/util-utf8-browser\";\n\n// Quick polyfill\nconst fromUtf8 =\n typeof Buffer !== \"undefined\" && Buffer.from\n ? (input: string) => Buffer.from(input, \"utf8\")\n : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport { convertToBuffer } from \"./convertToBuffer\";\nexport { isEmptyData } from \"./isEmptyData\";\nexport { numToUint8 } from \"./numToUint8\";\nexport {uint32ArrayFrom} from './uint32ArrayFrom';\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function numToUint8(num: number) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// IE 11 does not support Array.from, so we do it manually\nexport function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array {\n if (!Array.from) {\n const return_array = new Uint32Array(a_lookUpTable.length)\n let a_index = 0\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index]\n }\n return return_array\n }\n return Uint32Array.from(a_lookUpTable)\n}\n","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\n\ndeclare const TextDecoder: Function | undefined;\ndeclare const TextEncoder: Function | undefined;\n\nexport const fromUtf8 = (input: string): Uint8Array =>\n typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\n\nexport const toUtf8 = (input: Uint8Array): string =>\n typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n","/**\n * A declaration of the global TextEncoder and TextDecoder constructors.\n *\n * @see https://encoding.spec.whatwg.org/\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Encoding {\n interface TextDecoderOptions {\n fatal?: boolean;\n ignoreBOM?: boolean;\n }\n\n interface TextDecodeOptions {\n stream?: boolean;\n }\n\n interface TextDecoder {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n decode(input?: ArrayBuffer | ArrayBufferView, options?: TextDecodeOptions): string;\n }\n\n export interface TextDecoderConstructor {\n new (label?: string, options?: TextDecoderOptions): TextDecoder;\n }\n\n interface TextEncoder {\n readonly encoding: \"utf-8\";\n encode(input?: string): Uint8Array;\n }\n\n export interface TextEncoderConstructor {\n new (): TextEncoder;\n }\n}\n\ndeclare const TextDecoder: Encoding.TextDecoderConstructor;\n\ndeclare const TextEncoder: Encoding.TextEncoderConstructor;\n\nexport function fromUtf8(input: string): Uint8Array {\n return new TextEncoder().encode(input);\n}\n\nexport function toUtf8(input: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(input);\n}\n","/**\n * Converts a JS string from its native UCS-2/UTF-16 representation into a\n * Uint8Array of the bytes used to represent the equivalent characters in UTF-8.\n *\n * Cribbed from the `goog.crypt.stringToUtf8ByteArray` function in the Google\n * Closure library, though updated to use typed arrays.\n */\nexport const fromUtf8 = (input: string): Uint8Array => {\n const bytes: Array = [];\n for (let i = 0, len = input.length; i < len; i++) {\n const value = input.charCodeAt(i);\n if (value < 0x80) {\n bytes.push(value);\n } else if (value < 0x800) {\n bytes.push((value >> 6) | 0b11000000, (value & 0b111111) | 0b10000000);\n } else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n const surrogatePair = 0x10000 + ((value & 0b1111111111) << 10) + (input.charCodeAt(++i) & 0b1111111111);\n bytes.push(\n (surrogatePair >> 18) | 0b11110000,\n ((surrogatePair >> 12) & 0b111111) | 0b10000000,\n ((surrogatePair >> 6) & 0b111111) | 0b10000000,\n (surrogatePair & 0b111111) | 0b10000000\n );\n } else {\n bytes.push((value >> 12) | 0b11100000, ((value >> 6) & 0b111111) | 0b10000000, (value & 0b111111) | 0b10000000);\n }\n }\n\n return Uint8Array.from(bytes);\n};\n\n/**\n * Converts a typed array of bytes containing UTF-8 data into a native JS\n * string.\n *\n * Partly cribbed from the `goog.crypt.utf8ByteArrayToString` function in the\n * Google Closure library, though updated to use typed arrays and to better\n * handle astral plane code points.\n */\nexport const toUtf8 = (input: Uint8Array): string => {\n let decoded = \"\";\n for (let i = 0, len = input.length; i < len; i++) {\n const byte = input[i];\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n } else if (0b11000000 <= byte && byte < 0b11100000) {\n const nextByte = input[++i];\n decoded += String.fromCharCode(((byte & 0b11111) << 6) | (nextByte & 0b111111));\n } else if (0b11110000 <= byte && byte < 0b101101101) {\n const surrogatePair = [byte, input[++i], input[++i], input[++i]];\n const encoded = \"%\" + surrogatePair.map((byteValue) => byteValue.toString(16)).join(\"%\");\n decoded += decodeURIComponent(encoded);\n } else {\n decoded += String.fromCharCode(\n ((byte & 0b1111) << 12) | ((input[++i] & 0b111111) << 6) | (input[++i] & 0b111111)\n );\n }\n }\n\n return decoded;\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * Locale character mapping rules.\n */\ninterface Locale {\n regexp: RegExp;\n map: Record;\n}\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nconst SUPPORTED_LOCALE: Record = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str: string, locale: string) {\n const lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang) return lowerCase(str.replace(lang.regexp, (m) => lang.map[m]));\n return lowerCase(str);\n}\n\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str: string) {\n return str.toLowerCase();\n}\n","import { lowerCase } from \"lower-case\";\n\nexport interface Options {\n splitRegexp?: RegExp | RegExp[];\n stripRegexp?: RegExp | RegExp[];\n delimiter?: string;\n transform?: (part: string, index: number, parts: string[]) => string;\n}\n\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nconst DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n\n// Remove all non-word characters.\nconst DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input: string, options: Options = {}) {\n const {\n splitRegexp = DEFAULT_SPLIT_REGEXP,\n stripRegexp = DEFAULT_STRIP_REGEXP,\n transform = lowerCase,\n delimiter = \" \",\n } = options;\n\n let result = replace(\n replace(input, splitRegexp, \"$1\\0$2\"),\n stripRegexp,\n \"\\0\"\n );\n let start = 0;\n let end = result.length;\n\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\") start++;\n while (result.charAt(end - 1) === \"\\0\") end--;\n\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input: string, re: RegExp | RegExp[], value: string) {\n if (re instanceof RegExp) return input.replace(re, value);\n return re.reduce((input, re) => input.replace(re, value), input);\n}\n","import { noCase, Options } from \"no-case\";\n\nexport { Options };\n\nexport function pascalCaseTransform(input: string, index: number) {\n const firstChar = input.charAt(0);\n const lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return `_${firstChar}${lowerChars}`;\n }\n return `${firstChar.toUpperCase()}${lowerChars}`;\n}\n\nexport function pascalCaseTransformMerge(input: string) {\n return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();\n}\n\nexport function pascalCase(input: string, options: Options = {}) {\n return noCase(input, {\n delimiter: \"\",\n transform: pascalCaseTransform,\n ...options,\n });\n}\n","import {\n pascalCase,\n pascalCaseTransform,\n pascalCaseTransformMerge,\n Options,\n} from \"pascal-case\";\n\nexport { Options };\n\nexport function camelCaseTransform(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\n\nexport function camelCaseTransformMerge(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\n\nexport function camelCase(input: string, options: Options = {}) {\n return pascalCase(input, {\n transform: camelCaseTransform,\n ...options,\n });\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * Upper case the first character of an input string.\n */\nexport function upperCaseFirst(input: string) {\n return input.charAt(0).toUpperCase() + input.substr(1);\n}\n","import { noCase, Options } from \"no-case\";\nimport { upperCaseFirst } from \"upper-case-first\";\n\nexport { Options };\n\nexport function capitalCaseTransform(input: string) {\n return upperCaseFirst(input.toLowerCase());\n}\n\nexport function capitalCase(input: string, options: Options = {}) {\n return noCase(input, {\n delimiter: \" \",\n transform: capitalCaseTransform,\n ...options,\n });\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * Locale character mapping rules.\n */\ninterface Locale {\n regexp: RegExp;\n map: Record;\n}\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nconst SUPPORTED_LOCALE: Record = {\n tr: {\n regexp: /[\\u0069]/g,\n map: {\n i: \"\\u0130\",\n },\n },\n az: {\n regexp: /[\\u0069]/g,\n map: {\n i: \"\\u0130\",\n },\n },\n lt: {\n regexp: /[\\u0069\\u006A\\u012F]\\u0307|\\u0069\\u0307[\\u0300\\u0301\\u0303]/g,\n map: {\n i̇: \"\\u0049\",\n j̇: \"\\u004A\",\n į̇: \"\\u012E\",\n i̇̀: \"\\u00CC\",\n i̇́: \"\\u00CD\",\n i̇̃: \"\\u0128\",\n },\n },\n};\n\n/**\n * Localized upper case.\n */\nexport function localeUpperCase(str: string, locale: string) {\n const lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang) return upperCase(str.replace(lang.regexp, (m) => lang.map[m]));\n return upperCase(str);\n}\n\n/**\n * Upper case as a function.\n */\nexport function upperCase(str: string) {\n return str.toUpperCase();\n}\n","import { noCase, Options } from \"no-case\";\nimport { upperCase } from \"upper-case\";\n\nexport { Options };\n\nexport function constantCase(input: string, options: Options = {}) {\n return noCase(input, {\n delimiter: \"_\",\n transform: upperCase,\n ...options,\n });\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { noCase, Options } from \"no-case\";\n\nexport { Options };\n\nexport function dotCase(input: string, options: Options = {}) {\n return noCase(input, {\n delimiter: \".\",\n ...options,\n });\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { capitalCase, Options } from \"capital-case\";\n\nexport { Options };\n\nexport function headerCase(input: string, options: Options = {}) {\n return capitalCase(input, {\n delimiter: \"-\",\n ...options,\n });\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { dotCase, Options } from \"dot-case\";\n\nexport { Options };\n\nexport function paramCase(input: string, options: Options = {}) {\n return dotCase(input, {\n delimiter: \"-\",\n ...options,\n });\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { dotCase, Options } from \"dot-case\";\n\nexport { Options };\n\nexport function pathCase(input: string, options: Options = {}) {\n return dotCase(input, {\n delimiter: \"/\",\n ...options,\n });\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { noCase, Options } from \"no-case\";\nimport { upperCaseFirst } from \"upper-case-first\";\n\nexport { Options };\n\nexport function sentenceCaseTransform(input: string, index: number) {\n const result = input.toLowerCase();\n if (index === 0) return upperCaseFirst(result);\n return result;\n}\n\nexport function sentenceCase(input: string, options: Options = {}) {\n return noCase(input, {\n delimiter: \" \",\n transform: sentenceCaseTransform,\n ...options,\n });\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { dotCase, Options } from \"dot-case\";\n\nexport { Options };\n\nexport function snakeCase(input: string, options: Options = {}) {\n return dotCase(input, {\n delimiter: \"_\",\n ...options,\n });\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HighchartsReact\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"HighchartsReact\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 06abc0fd1cd6e6cc78b4","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HighchartsReact\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"HighchartsReact\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HighchartsReact\", function() { return HighchartsReact; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n// React currently throws a warning when using `useLayoutEffect` on the server.\n// To get around it, we can conditionally `useEffect` on the server (no-op) and\n// `useLayoutEffect` in the browser. We need `useLayoutEffect` to ensure the\n// `Highcharts` ref is available in the layout phase. This makes it available\n// in a parent component's `componentDidMount`.\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? __WEBPACK_IMPORTED_MODULE_0_react__[\"useLayoutEffect\"] : __WEBPACK_IMPORTED_MODULE_0_react__[\"useEffect\"];\nvar HighchartsReact = /*#__PURE__*/Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"memo\"])( /*#__PURE__*/Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"forwardRef\"])(function HighchartsReact(props, ref) {\n var containerRef = Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useRef\"])();\n var chartRef = Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useRef\"])();\n var constructorType = Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useRef\"])(props.constructorType);\n var highcharts = Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useRef\"])(props.highcharts);\n useIsomorphicLayoutEffect(function () {\n function createChart() {\n var H = props.highcharts || (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' && window.Highcharts;\n var constructorType = props.constructorType || 'chart';\n if (!H) {\n console.warn('The \"highcharts\" property was not passed.');\n } else if (!H[constructorType]) {\n console.warn('The \"constructorType\" property is incorrect or some ' + 'required module is not imported.');\n } else if (!props.options) {\n console.warn('The \"options\" property was not passed.');\n } else {\n // Create a chart\n chartRef.current = H[constructorType](containerRef.current, props.options, props.callback);\n }\n }\n if (!chartRef.current) {\n createChart();\n } else {\n if (props.allowChartUpdate !== false) {\n // Reacreate chart on Highcharts or constructor type change\n if (props.constructorType !== constructorType.current || props.highcharts !== highcharts.current) {\n constructorType.current = props.constructorType;\n highcharts.current = props.highcharts;\n createChart();\n // Use `chart.update` to apply changes\n } else if (!props.immutable && chartRef.current) {\n var _chartRef$current;\n (_chartRef$current = chartRef.current).update.apply(_chartRef$current, [props.options].concat(_toConsumableArray(props.updateArgs || [true, true])));\n } else {\n createChart();\n }\n }\n }\n }, [props.options, props.allowChartUpdate, props.updateArgs, props.containerProps, props.highcharts, props.constructorType]);\n\n // Destroy the chart on unmount\n useIsomorphicLayoutEffect(function () {\n return function () {\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n }, []);\n Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useImperativeHandle\"])(ref, function () {\n return {\n get chart() {\n return chartRef.current;\n },\n container: containerRef\n };\n }, []);\n\n // Create container for the chart\n return /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(\"div\", _extends({}, props.containerProps, {\n ref: containerRef\n }));\n}));\n/* harmony default export */ __webpack_exports__[\"default\"] = (HighchartsReact);\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// highcharts-react.min.js","import React, {\n forwardRef,\n memo,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef\n} from 'react';\n\n// React currently throws a warning when using `useLayoutEffect` on the server.\n// To get around it, we can conditionally `useEffect` on the server (no-op) and\n// `useLayoutEffect` in the browser. We need `useLayoutEffect` to ensure the\n// `Highcharts` ref is available in the layout phase. This makes it available\n// in a parent component's `componentDidMount`.\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport const HighchartsReact = memo(forwardRef(\n function HighchartsReact(props, ref) {\n const containerRef = useRef();\n const chartRef = useRef();\n const constructorType = useRef(props.constructorType);\n const highcharts = useRef(props.highcharts);\n\n useIsomorphicLayoutEffect(() => {\n function createChart() {\n const H = props.highcharts || (\n typeof window === 'object' && window.Highcharts\n );\n const constructorType = props.constructorType || 'chart';\n \n if (!H) {\n console.warn('The \"highcharts\" property was not passed.');\n \n } else if (!H[constructorType]) {\n console.warn(\n 'The \"constructorType\" property is incorrect or some ' +\n 'required module is not imported.'\n );\n } else if (!props.options) {\n console.warn('The \"options\" property was not passed.');\n \n } else {\n // Create a chart\n chartRef.current = H[constructorType](\n containerRef.current,\n props.options,\n props.callback\n );\n }\n }\n\n if (!chartRef.current) {\n createChart();\n } else {\n if (props.allowChartUpdate !== false) {\n // Reacreate chart on Highcharts or constructor type change\n if (\n props.constructorType !== constructorType.current ||\n props.highcharts !== highcharts.current\n ) {\n constructorType.current = props.constructorType;\n highcharts.current = props.highcharts;\n createChart();\n // Use `chart.update` to apply changes\n } else if (!props.immutable && chartRef.current) {\n chartRef.current.update(\n props.options,\n ...(props.updateArgs || [true, true])\n );\n } else {\n createChart();\n }\n }\n }\n }, [\n props.options,\n props.allowChartUpdate,\n props.updateArgs,\n props.containerProps,\n props.highcharts,\n props.constructorType\n ]);\n\n // Destroy the chart on unmount\n useIsomorphicLayoutEffect(() => {\n return () => {\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n get chart() {\n return chartRef.current;\n },\n container: containerRef\n }),\n []\n );\n\n // Create container for the chart\n return
;\n }\n));\n\nexport default HighchartsReact;\n\n\n\n// WEBPACK FOOTER //\n// ./src/HighchartsReact.js","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}\n// module id = 1\n// module chunks = 0 1","/**\n * @license Highcharts JS v11.0.1 (2023-05-08)\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function (root, factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = root.document ?\n factory(root) :\n factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/highcharts', function () {\n return factory(root);\n });\n } else {\n if (root.Highcharts) {\n root.Highcharts.error(16, true);\n }\n root.Highcharts = factory(root);\n }\n}(typeof window !== 'undefined' ? window : this, function (window) {\n 'use strict';\n var _modules = {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n\n if (typeof CustomEvent === 'function') {\n window.dispatchEvent(\n new CustomEvent(\n 'HighchartsModuleLoaded',\n { detail: { path: path, module: obj[path] }\n })\n );\n }\n }\n }\n _registerModule(_modules, 'Core/Globals.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n /**\n * Shared Highcharts properties.\n * @private\n */\n var Globals;\n (function (Globals) {\n /* *\n *\n * Constants\n *\n * */\n Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '11.0.1', Globals.win = (typeof window !== 'undefined' ?\n window :\n {}), // eslint-disable-line node/no-unsupported-features/es-builtins\n Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&\n Globals.doc.createElementNS &&\n !!Globals.doc.createElementNS(Globals.SVG_NS, 'svg').createSVGRect), Globals.userAgent = (Globals.win.navigator && Globals.win.navigator.userAgent) || '', Globals.isChrome = Globals.userAgent.indexOf('Chrome') !== -1, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.hasBidiBug = (Globals.isFirefox &&\n parseInt(Globals.userAgent.split('Firefox/')[1], 10) < 4 // issue #38\n ), Globals.hasTouch = !!Globals.win.TouchEvent, Globals.marginNames = [\n 'plotTop',\n 'marginRight',\n 'marginBottom',\n 'plotLeft'\n ], Globals.noop = function () { }, Globals.supportsPassiveEvents = (function () {\n // Checks whether the browser supports passive events, (#11353).\n let supportsPassive = false;\n // Object.defineProperty doesn't work on IE as well as passive\n // events - instead of using polyfill, we can exclude IE totally.\n if (!Globals.isMS) {\n const opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n if (Globals.win.addEventListener && Globals.win.removeEventListener) {\n Globals.win.addEventListener('testPassive', Globals.noop, opts);\n Globals.win.removeEventListener('testPassive', Globals.noop, opts);\n }\n }\n return supportsPassive;\n }());\n /**\n * An array containing the current chart objects in the page. A chart's\n * position in the array is preserved throughout the page's lifetime. When\n * a chart is destroyed, the array item becomes `undefined`.\n *\n * @name Highcharts.charts\n * @type {Array}\n */\n Globals.charts = [];\n /**\n * A hook for defining additional date format specifiers. New\n * specifiers are defined as key-value pairs by using the\n * specifier as key, and a function which takes the timestamp as\n * value. This function returns the formatted portion of the\n * date.\n *\n * @sample highcharts/global/dateformats/\n * Adding support for week number\n *\n * @name Highcharts.dateFormats\n * @type {Record}\n */\n Globals.dateFormats = {};\n /**\n * @private\n * @deprecated\n * @todo Use only `Core/Series/SeriesRegistry.seriesTypes`\n */\n Globals.seriesTypes = {};\n /**\n * @private\n */\n Globals.symbolSizes = {};\n /* *\n *\n * Properties\n *\n * */\n // eslint-disable-next-line prefer-const\n Globals.chartCount = 0;\n })(Globals || (Globals = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Theme options that should get applied to the chart. In module mode it\n * might not be possible to change this property because of read-only\n * restrictions, instead use {@link Highcharts.setOptions}.\n *\n * @deprecated\n * @name Highcharts.theme\n * @type {Highcharts.Options}\n */\n (''); // keeps doclets above in JS file\n\n return Globals;\n });\n _registerModule(_modules, 'Core/Utilities.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { charts, doc, win } = H;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Provide error messages for debugging, with links to online explanation. This\n * function can be overridden to provide custom error handling.\n *\n * @sample highcharts/chart/highcharts-error/\n * Custom error handler\n *\n * @function Highcharts.error\n *\n * @param {number|string} code\n * The error code. See\n * [errors.xml](https://github.com/highcharts/highcharts/blob/master/errors/errors.xml)\n * for available codes. If it is a string, the error message is printed\n * directly in the console.\n *\n * @param {boolean} [stop=false]\n * Whether to throw an error or just log a warning in the console.\n *\n * @param {Highcharts.Chart} [chart]\n * Reference to the chart that causes the error. Used in 'debugger'\n * module to display errors directly on the chart.\n * Important note: This argument is undefined for errors that lack\n * access to the Chart instance. In such case, the error will be\n * displayed on the last created chart.\n *\n * @param {Highcharts.Dictionary} [params]\n * Additional parameters for the generated message.\n *\n * @return {void}\n */\n function error(code, stop, chart, params) {\n const severity = stop ? 'Highcharts error' : 'Highcharts warning';\n if (code === 32) {\n code = `${severity}: Deprecated member`;\n }\n const isCode = isNumber(code);\n let message = isCode ?\n `${severity} #${code}: www.highcharts.com/errors/${code}/` :\n code.toString();\n const defaultHandler = function () {\n if (stop) {\n throw new Error(message);\n }\n // else ...\n if (win.console &&\n error.messages.indexOf(message) === -1 // prevent console flooting\n ) {\n console.warn(message); // eslint-disable-line no-console\n }\n };\n if (typeof params !== 'undefined') {\n let additionalMessages = '';\n if (isCode) {\n message += '?';\n }\n objectEach(params, function (value, key) {\n additionalMessages += `\\n - ${key}: ${value}`;\n if (isCode) {\n message += encodeURI(key) + '=' + encodeURI(value);\n }\n });\n message += additionalMessages;\n }\n fireEvent(H, 'displayError', { chart, code, message, params }, defaultHandler);\n error.messages.push(message);\n }\n (function (error) {\n error.messages = [];\n })(error || (error = {}));\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to deep merge two or more objects and return a third object.\n * If the first argument is true, the contents of the second object is copied\n * into the first object. The merge function can also be used with a single\n * object argument to create a deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {boolean} extend\n * Whether to extend the left-side object (a) or return a whole new\n * object.\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */ /**\n * Utility function to deep merge two or more objects and return a third object.\n * The merge function can also be used with a single object argument to create a\n * deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */\n function merge() {\n /* eslint-enable valid-jsdoc */\n let i, args = arguments, ret = {};\n const doCopy = function (copy, original) {\n // An object is replacing a primitive\n if (typeof copy !== 'object') {\n copy = {};\n }\n objectEach(original, function (value, key) {\n // Prototype pollution (#14883)\n if (key === '__proto__' || key === 'constructor') {\n return;\n }\n // Copy the contents of objects, but not arrays or DOM nodes\n if (isObject(value, true) &&\n !isClass(value) &&\n !isDOMElement(value)) {\n copy[key] = doCopy(copy[key] || {}, value);\n // Primitives and arrays are copied over directly\n }\n else {\n copy[key] = original[key];\n }\n });\n return copy;\n };\n // If first argument is true, copy into the existing object. Used in\n // setOptions.\n if (args[0] === true) {\n ret = args[1];\n args = Array.prototype.slice.call(args, 2);\n }\n // For each argument, extend the return\n const len = args.length;\n for (i = 0; i < len; i++) {\n ret = doCopy(ret, args[i]);\n }\n return ret;\n }\n /**\n * Constrain a value to within a lower and upper threshold.\n *\n * @private\n * @param {number} value The initial value\n * @param {number} min The lower threshold\n * @param {number} max The upper threshold\n * @return {number} Returns a number value within min and max.\n */\n function clamp(value, min, max) {\n return value > min ? value < max ? value : max : min;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Remove settings that have not changed, to avoid unnecessary rendering or\n * computing (#9197).\n * @private\n */\n function cleanRecursively(newer, older) {\n const result = {};\n objectEach(newer, function (_val, key) {\n let ob;\n // Dive into objects (except DOM nodes)\n if (isObject(newer[key], true) &&\n !newer.nodeType && // #10044\n older[key]) {\n ob = cleanRecursively(newer[key], older[key]);\n if (Object.keys(ob).length) {\n result[key] = ob;\n }\n // Arrays, primitives and DOM nodes are copied directly\n }\n else if (isObject(newer[key]) ||\n newer[key] !== older[key] ||\n // If the newer key is explicitly undefined, keep it (#10525)\n (key in newer && !(key in older))) {\n result[key] = newer[key];\n }\n });\n return result;\n }\n /**\n * Shortcut for parseInt\n *\n * @private\n * @function Highcharts.pInt\n *\n * @param {*} s\n * any\n *\n * @param {number} [mag]\n * Magnitude\n *\n * @return {number}\n * number\n */\n function pInt(s, mag) {\n return parseInt(s, mag || 10);\n }\n /**\n * Utility function to check for string type.\n *\n * @function Highcharts.isString\n *\n * @param {*} s\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a string.\n */\n function isString(s) {\n return typeof s === 'string';\n }\n /**\n * Utility function to check if an item is an array.\n *\n * @function Highcharts.isArray\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is an array.\n */\n function isArray(obj) {\n const str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Array Iterator]';\n }\n /**\n * Utility function to check if an item is of type object.\n *\n * @function Highcharts.isObject\n *\n * @param {*} obj\n * The item to check.\n *\n * @param {boolean} [strict=false]\n * Also checks that the object is not an array.\n *\n * @return {boolean}\n * True if the argument is an object.\n */\n function isObject(obj, strict) {\n return (!!obj &&\n typeof obj === 'object' &&\n (!strict || !isArray(obj))); // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n /**\n * Utility function to check if an Object is a HTML Element.\n *\n * @function Highcharts.isDOMElement\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a HTML Element.\n */\n function isDOMElement(obj) {\n return isObject(obj) && typeof obj.nodeType === 'number';\n }\n /**\n * Utility function to check if an Object is a class.\n *\n * @function Highcharts.isClass\n *\n * @param {object|undefined} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a class.\n */\n function isClass(obj) {\n const c = obj && obj.constructor;\n return !!(isObject(obj, true) &&\n !isDOMElement(obj) &&\n (c && c.name && c.name !== 'Object'));\n }\n /**\n * Utility function to check if an item is a number and it is finite (not NaN,\n * Infinity or -Infinity).\n *\n * @function Highcharts.isNumber\n *\n * @param {*} n\n * The item to check.\n *\n * @return {boolean}\n * True if the item is a finite number\n */\n function isNumber(n) {\n return typeof n === 'number' && !isNaN(n) && n < Infinity && n > -Infinity;\n }\n /**\n * Remove the last occurence of an item from an array.\n *\n * @function Highcharts.erase\n *\n * @param {Array<*>} arr\n * The array.\n *\n * @param {*} item\n * The item to remove.\n *\n * @return {void}\n */\n function erase(arr, item) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n break;\n }\n }\n }\n /**\n * Adds an item to an array, if it is not present in the array.\n *\n * @function Highcharts.pushUnique\n *\n * @param {Array} array\n * The array to add the item to.\n *\n * @param {unknown} item\n * The item to add.\n *\n * @return {boolean}\n * Returns true, if the item was not present and has been added.\n */\n function pushUnique(array, item) {\n return array.indexOf(item) < 0 && !!array.push(item);\n }\n /**\n * Check if an object is null or undefined.\n *\n * @function Highcharts.defined\n *\n * @param {*} obj\n * The object to check.\n *\n * @return {boolean}\n * False if the object is null or undefined, otherwise true.\n */\n function defined(obj) {\n return typeof obj !== 'undefined' && obj !== null;\n }\n /**\n * Set or get an attribute or an object of attributes.\n *\n * To use as a setter, pass a key and a value, or let the second argument be a\n * collection of keys and values. When using a collection, passing a value of\n * `null` or `undefined` will remove the attribute.\n *\n * To use as a getter, pass only a string as the second argument.\n *\n * @function Highcharts.attr\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} elem\n * The DOM element to receive the attribute(s).\n *\n * @param {string|Highcharts.HTMLAttributes|Highcharts.SVGAttributes} [keyOrAttribs]\n * The property or an object of key-value pairs.\n *\n * @param {number|string} [value]\n * The value if a single property is set.\n *\n * @return {string|null|undefined}\n * When used as a getter, return the value.\n */\n function attr(elem, keyOrAttribs, value) {\n const isGetter = isString(keyOrAttribs) && !defined(value);\n let ret;\n const attrSingle = (value, key) => {\n // Set the value\n if (defined(value)) {\n elem.setAttribute(key, value);\n // Get the value\n }\n else if (isGetter) {\n ret = elem.getAttribute(key);\n // IE7 and below cannot get class through getAttribute (#7850)\n if (!ret && key === 'class') {\n ret = elem.getAttribute(key + 'Name');\n }\n // Remove the value\n }\n else {\n elem.removeAttribute(key);\n }\n };\n // If keyOrAttribs is a string\n if (isString(keyOrAttribs)) {\n attrSingle(value, keyOrAttribs);\n // Else if keyOrAttribs is defined, it is a hash of key/value pairs\n }\n else {\n objectEach(keyOrAttribs, attrSingle);\n }\n return ret;\n }\n /**\n * Check if an element is an array, and if not, make it into an array.\n *\n * @function Highcharts.splat\n *\n * @param {*} obj\n * The object to splat.\n *\n * @return {Array}\n * The produced or original array.\n */\n function splat(obj) {\n return isArray(obj) ? obj : [obj];\n }\n /**\n * Set a timeout if the delay is given, otherwise perform the function\n * synchronously.\n *\n * @function Highcharts.syncTimeout\n *\n * @param {Function} fn\n * The function callback.\n *\n * @param {number} delay\n * Delay in milliseconds.\n *\n * @param {*} [context]\n * An optional context to send to the function callback.\n *\n * @return {number}\n * An identifier for the timeout that can later be cleared with\n * Highcharts.clearTimeout. Returns -1 if there is no timeout.\n */\n function syncTimeout(fn, delay, context) {\n if (delay > 0) {\n return setTimeout(fn, delay, context);\n }\n fn.call(0, context);\n return -1;\n }\n /**\n * Internal clear timeout. The function checks that the `id` was not removed\n * (e.g. by `chart.destroy()`). For the details see\n * [issue #7901](https://github.com/highcharts/highcharts/issues/7901).\n *\n * @function Highcharts.clearTimeout\n *\n * @param {number|undefined} id\n * Id of a timeout.\n */\n function internalClearTimeout(id) {\n if (defined(id)) {\n clearTimeout(id);\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to extend an object with the members of another.\n *\n * @function Highcharts.extend\n *\n * @param {T|undefined} a\n * The object to be extended.\n *\n * @param {Partial} b\n * The object to add to the first one.\n *\n * @return {T}\n * Object a, the original object.\n */\n function extend(a, b) {\n /* eslint-enable valid-jsdoc */\n let n;\n if (!a) {\n a = {};\n }\n for (n in b) { // eslint-disable-line guard-for-in\n a[n] = b[n];\n }\n return a;\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Return the first value that is not null or undefined.\n *\n * @function Highcharts.pick\n *\n * @param {...Array} items\n * Variable number of arguments to inspect.\n *\n * @return {T}\n * The value of the first argument that is not null or undefined.\n */\n function pick() {\n const args = arguments;\n const length = args.length;\n for (let i = 0; i < length; i++) {\n const arg = args[i];\n if (typeof arg !== 'undefined' && arg !== null) {\n return arg;\n }\n }\n }\n /**\n * Set CSS on a given element.\n *\n * @function Highcharts.css\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} el\n * An HTML DOM element.\n *\n * @param {Highcharts.CSSObject} styles\n * Style object with camel case property names.\n *\n * @return {void}\n */\n function css(el, styles) {\n if (H.isMS && !H.svg) { // #2686\n if (styles && defined(styles.opacity)) {\n styles.filter = `alpha(opacity=${styles.opacity * 100})`;\n }\n }\n extend(el.style, styles);\n }\n /**\n * Utility function to create an HTML element with attributes and styles.\n *\n * @function Highcharts.createElement\n *\n * @param {string} tag\n * The HTML tag.\n *\n * @param {Highcharts.HTMLAttributes} [attribs]\n * Attributes as an object of key-value pairs.\n *\n * @param {Highcharts.CSSObject} [styles]\n * Styles as an object of key-value pairs.\n *\n * @param {Highcharts.HTMLDOMElement} [parent]\n * The parent HTML object.\n *\n * @param {boolean} [nopad=false]\n * If true, remove all padding, border and margin.\n *\n * @return {Highcharts.HTMLDOMElement}\n * The created DOM element.\n */\n function createElement(tag, attribs, styles, parent, nopad) {\n const el = doc.createElement(tag);\n if (attribs) {\n extend(el, attribs);\n }\n if (nopad) {\n css(el, { padding: '0', border: 'none', margin: '0' });\n }\n if (styles) {\n css(el, styles);\n }\n if (parent) {\n parent.appendChild(el);\n }\n return el;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Extend a prototyped class by new members.\n *\n * @deprecated\n * @function Highcharts.extendClass\n *\n * @param {Highcharts.Class} parent\n * The parent prototype to inherit.\n *\n * @param {Highcharts.Dictionary<*>} members\n * A collection of prototype members to add or override compared to the\n * parent prototype.\n *\n * @return {Highcharts.Class}\n * A new prototype.\n */\n function extendClass(parent, members) {\n const obj = (function () { });\n obj.prototype = new parent(); // eslint-disable-line new-cap\n extend(obj.prototype, members);\n return obj;\n }\n /**\n * Left-pad a string to a given length by adding a character repetitively.\n *\n * @function Highcharts.pad\n *\n * @param {number} number\n * The input string or number.\n *\n * @param {number} [length]\n * The desired string length.\n *\n * @param {string} [padder=0]\n * The character to pad with.\n *\n * @return {string}\n * The padded string.\n */\n function pad(number, length, padder) {\n return new Array((length || 2) +\n 1 -\n String(number)\n .replace('-', '')\n .length).join(padder || '0') + number;\n }\n /**\n * Return a length based on either the integer value, or a percentage of a base.\n *\n * @function Highcharts.relativeLength\n *\n * @param {Highcharts.RelativeSize} value\n * A percentage string or a number.\n *\n * @param {number} base\n * The full length that represents 100%.\n *\n * @param {number} [offset=0]\n * A pixel offset to apply for percentage values. Used internally in\n * axis positioning.\n *\n * @return {number}\n * The computed length.\n */\n function relativeLength(value, base, offset) {\n return (/%$/).test(value) ?\n (base * parseFloat(value) / 100) + (offset || 0) :\n parseFloat(value);\n }\n /**\n * Wrap a method with extended functionality, preserving the original function.\n *\n * @function Highcharts.wrap\n *\n * @param {*} obj\n * The context object that the method belongs to. In real cases, this is\n * often a prototype.\n *\n * @param {string} method\n * The name of the method to extend.\n *\n * @param {Highcharts.WrapProceedFunction} func\n * A wrapper function callback. This function is called with the same\n * arguments as the original function, except that the original function\n * is unshifted and passed as the first argument.\n */\n function wrap(obj, method, func) {\n const proceed = obj[method];\n obj[method] = function () {\n const outerArgs = arguments, scope = this;\n return func.apply(this, [\n function () {\n return proceed.apply(scope, arguments.length ? arguments : outerArgs);\n }\n ].concat([].slice.call(arguments)));\n };\n }\n /**\n * Get the magnitude of a number.\n *\n * @function Highcharts.getMagnitude\n *\n * @param {number} num\n * The number.\n *\n * @return {number}\n * The magnitude, where 1-9 are magnitude 1, 10-99 magnitude 2 etc.\n */\n function getMagnitude(num) {\n return Math.pow(10, Math.floor(Math.log(num) / Math.LN10));\n }\n /**\n * Take an interval and normalize it to multiples of round numbers.\n *\n * @deprecated\n * @function Highcharts.normalizeTickInterval\n *\n * @param {number} interval\n * The raw, un-rounded interval.\n *\n * @param {Array<*>} [multiples]\n * Allowed multiples.\n *\n * @param {number} [magnitude]\n * The magnitude of the number.\n *\n * @param {boolean} [allowDecimals]\n * Whether to allow decimals.\n *\n * @param {boolean} [hasTickAmount]\n * If it has tickAmount, avoid landing on tick intervals lower than\n * original.\n *\n * @return {number}\n * The normalized interval.\n *\n * @todo\n * Move this function to the Axis prototype. It is here only for historical\n * reasons.\n */\n function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {\n let i, retInterval = interval;\n // round to a tenfold of 1, 2, 2.5 or 5\n magnitude = pick(magnitude, getMagnitude(interval));\n const normalized = interval / magnitude;\n // multiples for a linear scale\n if (!multiples) {\n multiples = hasTickAmount ?\n // Finer grained ticks when the tick amount is hard set, including\n // when alignTicks is true on multiple axes (#4580).\n [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] :\n // Else, let ticks fall on rounder numbers\n [1, 2, 2.5, 5, 10];\n // the allowDecimals option\n if (allowDecimals === false) {\n if (magnitude === 1) {\n multiples = multiples.filter(function (num) {\n return num % 1 === 0;\n });\n }\n else if (magnitude <= 0.1) {\n multiples = [1 / magnitude];\n }\n }\n }\n // normalize the interval to the nearest multiple\n for (i = 0; i < multiples.length; i++) {\n retInterval = multiples[i];\n // only allow tick amounts smaller than natural\n if ((hasTickAmount &&\n retInterval * magnitude >= interval) ||\n (!hasTickAmount &&\n (normalized <=\n (multiples[i] +\n (multiples[i + 1] || multiples[i])) / 2))) {\n break;\n }\n }\n // Multiply back to the correct magnitude. Correct floats to appropriate\n // precision (#6085).\n retInterval = correctFloat(retInterval * magnitude, -Math.round(Math.log(0.001) / Math.LN10));\n return retInterval;\n }\n /**\n * Sort an object array and keep the order of equal items. The ECMAScript\n * standard does not specify the behaviour when items are equal.\n *\n * @function Highcharts.stableSort\n *\n * @param {Array<*>} arr\n * The array to sort.\n *\n * @param {Function} sortFunction\n * The function to sort it with, like with regular Array.prototype.sort.\n */\n function stableSort(arr, sortFunction) {\n // @todo It seems like Chrome since v70 sorts in a stable way internally,\n // plus all other browsers do it, so over time we may be able to remove this\n // function\n const length = arr.length;\n let sortValue, i;\n // Add index to each item\n for (i = 0; i < length; i++) {\n arr[i].safeI = i; // stable sort index\n }\n arr.sort(function (a, b) {\n sortValue = sortFunction(a, b);\n return sortValue === 0 ? a.safeI - b.safeI : sortValue;\n });\n // Remove index from items\n for (i = 0; i < length; i++) {\n delete arr[i].safeI; // stable sort index\n }\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.min` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMin\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The lowest number.\n */\n function arrayMin(data) {\n let i = data.length, min = data[0];\n while (i--) {\n if (data[i] < min) {\n min = data[i];\n }\n }\n return min;\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.max` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMax\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The highest number.\n */\n function arrayMax(data) {\n let i = data.length, max = data[0];\n while (i--) {\n if (data[i] > max) {\n max = data[i];\n }\n }\n return max;\n }\n /**\n * Utility method that destroys any SVGElement instances that are properties on\n * the given object. It loops all properties and invokes destroy if there is a\n * destroy method. The property is then delete.\n *\n * @function Highcharts.destroyObjectProperties\n *\n * @param {*} obj\n * The object to destroy properties on.\n *\n * @param {*} [except]\n * Exception, do not destroy this property, only delete it.\n */\n function destroyObjectProperties(obj, except) {\n objectEach(obj, function (val, n) {\n // If the object is non-null and destroy is defined\n if (val && val !== except && val.destroy) {\n // Invoke the destroy\n val.destroy();\n }\n // Delete the property from the object.\n delete obj[n];\n });\n }\n /**\n * Discard a HTML element\n *\n * @function Highcharts.discardElement\n *\n * @param {Highcharts.HTMLDOMElement} element\n * The HTML node to discard.\n */\n function discardElement(element) {\n if (element && element.parentElement) {\n element.parentElement.removeChild(element);\n }\n }\n /**\n * Fix JS round off float errors.\n *\n * @function Highcharts.correctFloat\n *\n * @param {number} num\n * A float number to fix.\n *\n * @param {number} [prec=14]\n * The precision.\n *\n * @return {number}\n * The corrected float number.\n */\n function correctFloat(num, prec) {\n // When the number is higher than 1e14 use the number (#16275)\n return num > 1e14 ? num : parseFloat(num.toPrecision(prec || 14));\n }\n /**\n * The time unit lookup\n *\n * @ignore\n */\n const timeUnits = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 24 * 3600000,\n week: 7 * 24 * 3600000,\n month: 28 * 24 * 3600000,\n year: 364 * 24 * 3600000\n };\n /**\n * Easing definition\n *\n * @private\n * @function Math.easeInOutSine\n *\n * @param {number} pos\n * Current position, ranging from 0 to 1.\n *\n * @return {number}\n * Ease result\n */\n Math.easeInOutSine = function (pos) {\n return -0.5 * (Math.cos(Math.PI * pos) - 1);\n };\n /**\n * Returns the value of a property path on a given object.\n *\n * @private\n * @function getNestedProperty\n *\n * @param {string} path\n * Path to the property, for example `custom.myValue`.\n *\n * @param {unknown} obj\n * Instance containing the property on the specific path.\n *\n * @return {unknown}\n * The unknown property value.\n */\n function getNestedProperty(path, parent) {\n const pathElements = path.split('.');\n while (pathElements.length && defined(parent)) {\n const pathElement = pathElements.shift();\n // Filter on the key\n if (typeof pathElement === 'undefined' ||\n pathElement === '__proto__') {\n return; // undefined\n }\n const child = parent[pathElement];\n // Filter on the child\n if (!defined(child) ||\n typeof child === 'function' ||\n typeof child.nodeType === 'number' ||\n child === win) {\n return; // undefined\n }\n // Else, proceed\n parent = child;\n }\n return parent;\n }\n /**\n * Get the computed CSS value for given element and property, only for numerical\n * properties. For width and height, the dimension of the inner box (excluding\n * padding) is returned. Used for fitting the chart within the container.\n *\n * @function Highcharts.getStyle\n *\n * @param {Highcharts.HTMLDOMElement} el\n * An HTML element.\n *\n * @param {string} prop\n * The property name.\n *\n * @param {boolean} [toInt=true]\n * Parse to integer.\n *\n * @return {number|string|undefined}\n * The style value.\n */\n function getStyle(el, prop, toInt) {\n let style;\n // For width and height, return the actual inner pixel size (#4913)\n if (prop === 'width') {\n let offsetWidth = Math.min(el.offsetWidth, el.scrollWidth);\n // In flex boxes, we need to use getBoundingClientRect and floor it,\n // because scrollWidth doesn't support subpixel precision (#6427) ...\n const boundingClientRectWidth = el.getBoundingClientRect &&\n el.getBoundingClientRect().width;\n // ...unless if the containing div or its parents are transform-scaled\n // down, in which case the boundingClientRect can't be used as it is\n // also scaled down (#9871, #10498).\n if (boundingClientRectWidth < offsetWidth &&\n boundingClientRectWidth >= offsetWidth - 1) {\n offsetWidth = Math.floor(boundingClientRectWidth);\n }\n return Math.max(0, // #8377\n (offsetWidth -\n (getStyle(el, 'padding-left', true) || 0) -\n (getStyle(el, 'padding-right', true) || 0)));\n }\n if (prop === 'height') {\n return Math.max(0, // #8377\n (Math.min(el.offsetHeight, el.scrollHeight) -\n (getStyle(el, 'padding-top', true) || 0) -\n (getStyle(el, 'padding-bottom', true) || 0)));\n }\n // Otherwise, get the computed style\n const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined\n if (css) {\n style = css.getPropertyValue(prop);\n if (pick(toInt, prop !== 'opacity')) {\n style = pInt(style);\n }\n }\n return style;\n }\n /**\n * Search for an item in an array.\n *\n * @function Highcharts.inArray\n *\n * @deprecated\n *\n * @param {*} item\n * The item to search for.\n *\n * @param {Array<*>} arr\n * The array or node collection to search in.\n *\n * @param {number} [fromIndex=0]\n * The index to start searching from.\n *\n * @return {number}\n * The index within the array, or -1 if not found.\n */\n function inArray(item, arr, fromIndex) {\n error(32, false, void 0, { 'Highcharts.inArray': 'use Array.indexOf' });\n return arr.indexOf(item, fromIndex);\n }\n /**\n * Return the value of the first element in the array that satisfies the\n * provided testing function.\n *\n * @function Highcharts.find\n *\n * @param {Array} arr\n * The array to test.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if this item satisfies the condition.\n *\n * @return {T|undefined}\n * The value of the element.\n */\n const find = Array.prototype.find ?\n function (arr, callback) {\n return arr.find(callback);\n } :\n // Legacy implementation. PhantomJS, IE <= 11 etc. #7223.\n function (arr, callback) {\n let i;\n const length = arr.length;\n for (i = 0; i < length; i++) {\n if (callback(arr[i], i)) { // eslint-disable-line node/callback-return\n return arr[i];\n }\n }\n };\n /**\n * Returns an array of a given object's own properties.\n *\n * @function Highcharts.keys\n * @deprecated\n *\n * @param {*} obj\n * The object of which the properties are to be returned.\n *\n * @return {Array}\n * An array of strings that represents all the properties.\n */\n function keys(obj) {\n error(32, false, void 0, { 'Highcharts.keys': 'use Object.keys' });\n return Object.keys(obj);\n }\n /**\n * Get the element's offset position, corrected for `overflow: auto`.\n *\n * @function Highcharts.offset\n *\n * @param {global.Element} el\n * The DOM element.\n *\n * @return {Highcharts.OffsetObject}\n * An object containing `left` and `top` properties for the position in\n * the page.\n */\n function offset(el) {\n const docElem = doc.documentElement, box = (el.parentElement || el.parentNode) ?\n el.getBoundingClientRect() :\n { top: 0, left: 0, width: 0, height: 0 };\n return {\n top: box.top + (win.pageYOffset || docElem.scrollTop) -\n (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) -\n (docElem.clientLeft || 0),\n width: box.width,\n height: box.height\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Iterate over object key pairs in an object.\n *\n * @function Highcharts.objectEach\n *\n * @param {*} obj\n * The object to iterate over.\n *\n * @param {Highcharts.ObjectEachCallbackFunction} fn\n * The iterator callback. It passes three arguments:\n * * value - The property value.\n * * key - The property key.\n * * obj - The object that objectEach is being applied to.\n *\n * @param {T} [ctx]\n * The context.\n */\n function objectEach(obj, fn, ctx) {\n /* eslint-enable valid-jsdoc */\n for (const key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n fn.call(ctx || obj[key], obj[key], key, obj);\n }\n }\n }\n /**\n * Iterate over an array.\n *\n * @deprecated\n * @function Highcharts.each\n *\n * @param {Array<*>} arr\n * The array to iterate over.\n *\n * @param {Function} fn\n * The iterator callback. It passes three arguments:\n * - `item`: The array item.\n * - `index`: The item's index in the array.\n * - `arr`: The array that each is being applied to.\n *\n * @param {*} [ctx]\n * The context.\n *\n * @return {void}\n */\n /**\n * Filter an array by a callback.\n *\n * @deprecated\n * @function Highcharts.grep\n *\n * @param {Array<*>} arr\n * The array to filter.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if the item is to be preserved.\n *\n * @return {Array<*>}\n * A new, filtered array.\n */\n /**\n * Map an array by a callback.\n *\n * @deprecated\n * @function Highcharts.map\n *\n * @param {Array<*>} arr\n * The array to map.\n *\n * @param {Function} fn\n * The callback function. Return the new value for the new array.\n *\n * @return {Array<*>}\n * A new array item with modified items.\n */\n /**\n * Reduce an array to a single value.\n *\n * @deprecated\n * @function Highcharts.reduce\n *\n * @param {Array<*>} arr\n * The array to reduce.\n *\n * @param {Function} fn\n * The callback function. Return the reduced value. Receives 4\n * arguments: Accumulated/reduced value, current value, current array\n * index, and the array.\n *\n * @param {*} initialValue\n * The initial value of the accumulator.\n *\n * @return {*}\n * The reduced value.\n */\n /**\n * Test whether at least one element in the array passes the test implemented by\n * the provided function.\n *\n * @deprecated\n * @function Highcharts.some\n *\n * @param {Array<*>} arr\n * The array to test\n *\n * @param {Function} fn\n * The function to run on each item. Return truty to pass the test.\n * Receives arguments `currentValue`, `index` and `array`.\n *\n * @param {*} ctx\n * The context.\n *\n * @return {boolean}\n */\n objectEach({\n map: 'map',\n each: 'forEach',\n grep: 'filter',\n reduce: 'reduce',\n some: 'some'\n }, function (val, key) {\n H[key] = function (arr) {\n error(32, false, void 0, { [`Highcharts.${key}`]: `use Array.${val}` });\n return Array.prototype[val].apply(arr, [].slice.call(arguments, 1));\n };\n });\n /* eslint-disable valid-jsdoc */\n /**\n * Add an event listener.\n *\n * @function Highcharts.addEvent\n *\n * @param {Highcharts.Class|T} el\n * The element or object to add a listener to. It can be a\n * {@link HTMLDOMElement}, an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The event type.\n *\n * @param {Highcharts.EventCallbackFunction|Function} fn\n * The function callback to execute when the event is fired.\n *\n * @param {Highcharts.EventOptionsObject} [options]\n * Options for adding the event.\n *\n * @return {Function}\n * A callback function to remove the added event.\n */\n function addEvent(el, type, fn, options = {}) {\n /* eslint-enable valid-jsdoc */\n // Add hcEvents to either the prototype (in case we're running addEvent on a\n // class) or the instance. If hasOwnProperty('hcEvents') is false, it is\n // inherited down the prototype chain, in which case we need to set the\n // property on this instance (which may itself be a prototype).\n const owner = typeof el === 'function' && el.prototype || el;\n if (!Object.hasOwnProperty.call(owner, 'hcEvents')) {\n owner.hcEvents = {};\n }\n const events = owner.hcEvents;\n // Allow click events added to points, otherwise they will be prevented by\n // the TouchPointer.pinch function after a pinch zoom operation (#7091).\n if (H.Point && // without H a dependency loop occurs\n el instanceof H.Point &&\n el.series &&\n el.series.chart) {\n el.series.chart.runTrackerClick = true;\n }\n // Handle DOM events\n // If the browser supports passive events, add it to improve performance\n // on touch events (#11353).\n const addEventListener = el.addEventListener;\n if (addEventListener) {\n addEventListener.call(el, type, fn, H.supportsPassiveEvents ? {\n passive: options.passive === void 0 ?\n type.indexOf('touch') !== -1 : options.passive,\n capture: false\n } : false);\n }\n if (!events[type]) {\n events[type] = [];\n }\n const eventObject = {\n fn,\n order: typeof options.order === 'number' ? options.order : Infinity\n };\n events[type].push(eventObject);\n // Order the calls\n events[type].sort((a, b) => a.order - b.order);\n // Return a function that can be called to remove this event.\n return function () {\n removeEvent(el, type, fn);\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Remove an event that was added with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.removeEvent\n *\n * @param {Highcharts.Class|T} el\n * The element to remove events on.\n *\n * @param {string} [type]\n * The type of events to remove. If undefined, all events are removed\n * from the element.\n *\n * @param {Highcharts.EventCallbackFunction} [fn]\n * The specific callback to remove. If undefined, all events that match\n * the element and optionally the type are removed.\n *\n * @return {void}\n */\n function removeEvent(el, type, fn) {\n /* eslint-enable valid-jsdoc */\n /**\n * @private\n */\n function removeOneEvent(type, fn) {\n const removeEventListener = el.removeEventListener;\n if (removeEventListener) {\n removeEventListener.call(el, type, fn, false);\n }\n }\n /**\n * @private\n */\n function removeAllEvents(eventCollection) {\n let types, len;\n if (!el.nodeName) {\n return; // break on non-DOM events\n }\n if (type) {\n types = {};\n types[type] = true;\n }\n else {\n types = eventCollection;\n }\n objectEach(types, function (_val, n) {\n if (eventCollection[n]) {\n len = eventCollection[n].length;\n while (len--) {\n removeOneEvent(n, eventCollection[n][len].fn);\n }\n }\n });\n }\n const owner = typeof el === 'function' && el.prototype || el;\n if (Object.hasOwnProperty.call(owner, 'hcEvents')) {\n const events = owner.hcEvents;\n if (type) {\n const typeEvents = (events[type] || []);\n if (fn) {\n events[type] = typeEvents.filter(function (obj) {\n return fn !== obj.fn;\n });\n removeOneEvent(type, fn);\n }\n else {\n removeAllEvents(events);\n events[type] = [];\n }\n }\n else {\n removeAllEvents(events);\n delete owner.hcEvents;\n }\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Fire an event that was registered with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.fireEvent\n *\n * @param {T} el\n * The object to fire the event on. It can be a {@link HTMLDOMElement},\n * an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The type of event.\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Custom event arguments that are passed on as an argument to the event\n * handler.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * The default function to execute if the other listeners haven't\n * returned false.\n *\n * @return {void}\n */\n function fireEvent(el, type, eventArguments, defaultFunction) {\n /* eslint-enable valid-jsdoc */\n let e, i;\n eventArguments = eventArguments || {};\n if (doc.createEvent &&\n (el.dispatchEvent ||\n (el.fireEvent &&\n // Enable firing events on Highcharts instance.\n el !== H))) {\n e = doc.createEvent('Events');\n e.initEvent(type, true, true);\n eventArguments = extend(e, eventArguments);\n if (el.dispatchEvent) {\n el.dispatchEvent(eventArguments);\n }\n else {\n el.fireEvent(type, eventArguments);\n }\n }\n else if (el.hcEvents) {\n if (!eventArguments.target) {\n // We're running a custom event\n extend(eventArguments, {\n // Attach a simple preventDefault function to skip\n // default handler if called. The built-in\n // defaultPrevented property is not overwritable (#5112)\n preventDefault: function () {\n eventArguments.defaultPrevented = true;\n },\n // Setting target to native events fails with clicking\n // the zoom-out button in Chrome.\n target: el,\n // If the type is not set, we're running a custom event\n // (#2297). If it is set, we're running a browser event.\n type: type\n });\n }\n const events = [];\n let object = el;\n let multilevel = false;\n // Recurse up the inheritance chain and collect hcEvents set as own\n // objects on the prototypes.\n while (object.hcEvents) {\n if (Object.hasOwnProperty.call(object, 'hcEvents') &&\n object.hcEvents[type]) {\n if (events.length) {\n multilevel = true;\n }\n events.unshift.apply(events, object.hcEvents[type]);\n }\n object = Object.getPrototypeOf(object);\n }\n // For performance reasons, only sort the event handlers in case we are\n // dealing with multiple levels in the prototype chain. Otherwise, the\n // events are already sorted in the addEvent function.\n if (multilevel) {\n // Order the calls\n events.sort((a, b) => a.order - b.order);\n }\n // Call the collected event handlers\n events.forEach((obj) => {\n // If the event handler returns false, prevent the default handler\n // from executing\n if (obj.fn.call(el, eventArguments) === false) {\n eventArguments.preventDefault();\n }\n });\n }\n // Run the default if not prevented\n if (defaultFunction && !eventArguments.defaultPrevented) {\n defaultFunction.call(el, eventArguments);\n }\n }\n let serialMode;\n /**\n * Get a unique key for using in internal element id's and pointers. The key is\n * composed of a random hash specific to this Highcharts instance, and a\n * counter.\n *\n * @example\n * let id = uniqueKey(); // => 'highcharts-x45f6hp-0'\n *\n * @function Highcharts.uniqueKey\n *\n * @return {string}\n * A unique key.\n */\n const uniqueKey = (function () {\n const hash = Math.random().toString(36).substring(2, 9) + '-';\n let id = 0;\n return function () {\n return 'highcharts-' + (serialMode ? '' : hash) + id++;\n };\n }());\n /**\n * Activates a serial mode for element IDs provided by\n * {@link Highcharts.uniqueKey}. This mode can be used in automated tests, where\n * a simple comparison of two rendered SVG graphics is needed.\n *\n * **Note:** This is only for testing purposes and will break functionality in\n * webpages with multiple charts.\n *\n * @example\n * if (\n * process &&\n * process.env.NODE_ENV === 'development'\n * ) {\n * Highcharts.useSerialIds(true);\n * }\n *\n * @function Highcharts.useSerialIds\n *\n * @param {boolean} [mode]\n * Changes the state of serial mode.\n *\n * @return {boolean|undefined}\n * State of the serial mode.\n */\n function useSerialIds(mode) {\n return (serialMode = pick(mode, serialMode));\n }\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n // Register Highcharts as a plugin in jQuery\n if (win.jQuery) {\n /**\n * Highcharts-extended JQuery.\n *\n * @external JQuery\n */\n /**\n * Helper function to return the chart of the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @return {Highcharts.Chart}\n * The chart that is linked to the JQuery selector element.\n */ /**\n * Factory function to create a chart in the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @param {'Chart'|'Map'|'StockChart'|string} [className]\n * Name of the factory class in the Highcharts namespace.\n *\n * @param {Highcharts.Options} [options]\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {JQuery}\n * The current JQuery selector.\n */\n win.jQuery.fn.highcharts = function () {\n const args = [].slice.call(arguments);\n if (this[0]) { // this[0] is the renderTo div\n // Create the chart\n if (args[0]) {\n new H[ // eslint-disable-line computed-property-spacing, no-new\n // Constructor defaults to Chart\n isString(args[0]) ? args.shift() : 'Chart'](this[0], args[0], args[1]);\n return this;\n }\n // When called without parameters or with the return argument,\n // return an existing chart\n return charts[attr(this[0], 'data-highcharts-chart')];\n }\n };\n }\n /* *\n *\n * Default Export\n *\n * */\n // TODO use named exports when supported.\n const Utilities = {\n addEvent,\n arrayMax,\n arrayMin,\n attr,\n clamp,\n cleanRecursively,\n clearTimeout: internalClearTimeout,\n correctFloat,\n createElement,\n css,\n defined,\n destroyObjectProperties,\n discardElement,\n erase,\n error,\n extend,\n extendClass,\n find,\n fireEvent,\n getMagnitude,\n getNestedProperty,\n getStyle,\n inArray,\n isArray,\n isClass,\n isDOMElement,\n isFunction,\n isNumber,\n isObject,\n isString,\n keys,\n merge,\n normalizeTickInterval,\n objectEach,\n offset,\n pad,\n pick,\n pInt,\n pushUnique,\n relativeLength,\n removeEvent,\n splat,\n stableSort,\n syncTimeout,\n timeUnits,\n uniqueKey,\n useSerialIds,\n wrap\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * An animation configuration. Animation configurations can also be defined as\n * booleans, where `false` turns off animation and `true` defaults to a duration\n * of 500ms and defer of 0ms.\n *\n * @interface Highcharts.AnimationOptionsObject\n */ /**\n * A callback function to exectute when the animation finishes.\n * @name Highcharts.AnimationOptionsObject#complete\n * @type {Function|undefined}\n */ /**\n * The animation defer in milliseconds.\n * @name Highcharts.AnimationOptionsObject#defer\n * @type {number|undefined}\n */ /**\n * The animation duration in milliseconds.\n * @name Highcharts.AnimationOptionsObject#duration\n * @type {number|undefined}\n */ /**\n * The name of an easing function as defined on the `Math` object.\n * @name Highcharts.AnimationOptionsObject#easing\n * @type {string|Function|undefined}\n */ /**\n * A callback function to execute on each step of each attribute or CSS property\n * that's being animated. The first argument contains information about the\n * animation and progress.\n * @name Highcharts.AnimationOptionsObject#step\n * @type {Function|undefined}\n */\n /**\n * Creates a frame for the animated SVG element.\n *\n * @callback Highcharts.AnimationStepCallbackFunction\n *\n * @param {Highcharts.SVGElement} this\n * The SVG element to animate.\n *\n * @return {void}\n */\n /**\n * Interface description for a class.\n *\n * @interface Highcharts.Class\n * @extends Function\n */ /**\n * Class costructor.\n * @function Highcharts.Class#new\n * @param {...Array<*>} args\n * Constructor arguments.\n * @return {T}\n * Class instance.\n */\n /**\n * A style object with camel case property names to define visual appearance of\n * a SVG element or HTML element. The properties can be whatever styles are\n * supported on the given SVG or HTML element.\n *\n * @example\n * {\n * fontFamily: 'monospace',\n * fontSize: '1.2em'\n * }\n *\n * @interface Highcharts.CSSObject\n */ /**\n * @name Highcharts.CSSObject#[key:string]\n * @type {boolean|number|string|undefined}\n */ /**\n * Background style for the element.\n * @name Highcharts.CSSObject#background\n * @type {string|undefined}\n */ /**\n * Background color of the element.\n * @name Highcharts.CSSObject#backgroundColor\n * @type {Highcharts.ColorString|undefined}\n */ /**\n * Border style for the element.\n * @name Highcharts.CSSObject#border\n * @type {string|undefined}\n */ /**\n * Radius of the element border.\n * @name Highcharts.CSSObject#borderRadius\n * @type {number|undefined}\n */ /**\n * Color used in the element. The 'contrast' option is a Highcharts custom\n * property that results in black or white, depending on the background of the\n * element.\n * @name Highcharts.CSSObject#color\n * @type {'contrast'|Highcharts.ColorString|undefined}\n */ /**\n * Style of the mouse cursor when resting over the element.\n * @name Highcharts.CSSObject#cursor\n * @type {Highcharts.CursorValue|undefined}\n */ /**\n * Font family of the element text. Multiple values have to be in decreasing\n * preference order and separated by comma.\n * @name Highcharts.CSSObject#fontFamily\n * @type {string|undefined}\n */ /**\n * Font size of the element text.\n * @name Highcharts.CSSObject#fontSize\n * @type {string|undefined}\n */ /**\n * Font weight of the element text.\n * @name Highcharts.CSSObject#fontWeight\n * @type {string|undefined}\n */ /**\n * Height of the element.\n * @name Highcharts.CSSObject#height\n * @type {number|undefined}\n */ /**\n * Width of the element border.\n * @name Highcharts.CSSObject#lineWidth\n * @type {number|undefined}\n */ /**\n * Opacity of the element.\n * @name Highcharts.CSSObject#opacity\n * @type {number|undefined}\n */ /**\n * Space around the element content.\n * @name Highcharts.CSSObject#padding\n * @type {string|undefined}\n */ /**\n * Behaviour of the element when the mouse cursor rests over it.\n * @name Highcharts.CSSObject#pointerEvents\n * @type {string|undefined}\n */ /**\n * Positioning of the element.\n * @name Highcharts.CSSObject#position\n * @type {string|undefined}\n */ /**\n * Alignment of the element text.\n * @name Highcharts.CSSObject#textAlign\n * @type {string|undefined}\n */ /**\n * Additional decoration of the element text.\n * @name Highcharts.CSSObject#textDecoration\n * @type {string|undefined}\n */ /**\n * Outline style of the element text.\n * @name Highcharts.CSSObject#textOutline\n * @type {string|undefined}\n */ /**\n * Line break style of the element text. Highcharts SVG elements support\n * `ellipsis` when a `width` is set.\n * @name Highcharts.CSSObject#textOverflow\n * @type {string|undefined}\n */ /**\n * Top spacing of the element relative to the parent element.\n * @name Highcharts.CSSObject#top\n * @type {string|undefined}\n */ /**\n * Animated transition of selected element properties.\n * @name Highcharts.CSSObject#transition\n * @type {string|undefined}\n */ /**\n * Line break style of the element text.\n * @name Highcharts.CSSObject#whiteSpace\n * @type {string|undefined}\n */ /**\n * Width of the element.\n * @name Highcharts.CSSObject#width\n * @type {number|undefined}\n */\n /**\n * All possible cursor styles.\n *\n * @typedef {'alias'|'all-scroll'|'auto'|'cell'|'col-resize'|'context-menu'|'copy'|'crosshair'|'default'|'e-resize'|'ew-resize'|'grab'|'grabbing'|'help'|'move'|'n-resize'|'ne-resize'|'nesw-resize'|'no-drop'|'none'|'not-allowed'|'ns-resize'|'nw-resize'|'nwse-resize'|'pointer'|'progress'|'row-resize'|'s-resize'|'se-resize'|'sw-resize'|'text'|'vertical-text'|'w-resize'|'wait'|'zoom-in'|'zoom-out'} Highcharts.CursorValue\n */\n /**\n * All possible dash styles.\n *\n * @typedef {'Dash'|'DashDot'|'Dot'|'LongDash'|'LongDashDot'|'LongDashDotDot'|'ShortDash'|'ShortDashDot'|'ShortDashDotDot'|'ShortDot'|'Solid'} Highcharts.DashStyleValue\n */\n /**\n * Generic dictionary in TypeScript notation.\n * Use the native `AnyRecord` instead.\n *\n * @deprecated\n * @interface Highcharts.Dictionary\n */ /**\n * @name Highcharts.Dictionary#[key:string]\n * @type {T}\n */\n /**\n * The function callback to execute when the event is fired. The `this` context\n * contains the instance, that fired the event.\n *\n * @callback Highcharts.EventCallbackFunction\n *\n * @param {T} this\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Event arguments.\n *\n * @return {boolean|void}\n */\n /**\n * The event options for adding function callback.\n *\n * @interface Highcharts.EventOptionsObject\n */ /**\n * The order the event handler should be called. This opens for having one\n * handler be called before another, independent of in which order they were\n * added.\n * @name Highcharts.EventOptionsObject#order\n * @type {number}\n */ /**\n * Whether an event should be passive or not.\n * When set to `true`, the function specified by listener will never call\n * `preventDefault()`.\n * @name Highcharts.EventOptionsObject#passive\n * @type boolean\n */\n /**\n * Formats data as a string. Usually the data is accessible throught the `this`\n * keyword.\n *\n * @callback Highcharts.FormatterCallbackFunction\n *\n * @param {T} this\n * Context to format\n *\n * @return {string}\n * Formatted text\n */\n /**\n * An object of key-value pairs for HTML attributes.\n *\n * @typedef {Highcharts.Dictionary} Highcharts.HTMLAttributes\n */\n /**\n * An HTML DOM element. The type is a reference to the regular HTMLElement in\n * the global scope.\n *\n * @typedef {global.HTMLElement} Highcharts.HTMLDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement\n */\n /**\n * The iterator callback.\n *\n * @callback Highcharts.ObjectEachCallbackFunction\n *\n * @param {T} this\n * The context.\n *\n * @param {*} value\n * The property value.\n *\n * @param {string} key\n * The property key.\n *\n * @param {*} obj\n * The object that objectEach is being applied to.\n */\n /**\n * An object containing `left` and `top` properties for the position in the\n * page.\n *\n * @interface Highcharts.OffsetObject\n */ /**\n * Left distance to the page border.\n * @name Highcharts.OffsetObject#left\n * @type {number}\n */ /**\n * Top distance to the page border.\n * @name Highcharts.OffsetObject#top\n * @type {number}\n */\n /**\n * Describes a range.\n *\n * @interface Highcharts.RangeObject\n */ /**\n * Maximum number of the range.\n * @name Highcharts.RangeObject#max\n * @type {number}\n */ /**\n * Minimum number of the range.\n * @name Highcharts.RangeObject#min\n * @type {number}\n */\n /**\n * If a number is given, it defines the pixel length. If a percentage string is\n * given, like for example `'50%'`, the setting defines a length relative to a\n * base size, for example the size of a container.\n *\n * @typedef {number|string} Highcharts.RelativeSize\n */\n /**\n * Proceed function to call original (wrapped) function.\n *\n * @callback Highcharts.WrapProceedFunction\n *\n * @param {*} [arg1]\n * Optional argument. Without any arguments defaults to first argument of\n * the wrapping function.\n *\n * @param {*} [arg2]\n * Optional argument. Without any arguments defaults to second argument\n * of the wrapping function.\n *\n * @param {*} [arg3]\n * Optional argument. Without any arguments defaults to third argument of\n * the wrapping function.\n *\n * @return {*}\n * Return value of the original function.\n */\n /**\n * The Highcharts object is the placeholder for all other members, and various\n * utility functions. The most important member of the namespace would be the\n * chart constructor.\n *\n * @example\n * let chart = Highcharts.chart('container', { ... });\n *\n * @namespace Highcharts\n */\n ''; // detach doclets above\n\n return Utilities;\n });\n _registerModule(_modules, 'Core/Chart/ChartDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for the chart.\n *\n * @optionparent chart\n */\n const ChartDefaults = {\n /**\n * Default `mapData` for all series, in terms of a GeoJSON or TopoJSON\n * object. If set to a string, it functions as an index into the\n * `Highcharts.maps` array.\n *\n * For picking out individual shapes and geometries to use for each series\n * of the map, see [series.mapData](#series.map.mapData).\n *\n * @sample maps/demo/geojson\n * Loading GeoJSON data\n * @sample maps/chart/topojson\n * Loading TopoJSON data\n *\n * @type {string|Array<*>|Highcharts.GeoJSON|Highcharts.TopoJSON}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.map\n */\n /**\n * Set lat/lon transformation definitions for the chart. If not defined,\n * these are extracted from the map data.\n *\n * @type {*}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.mapTransforms\n */\n /**\n * When using multiple axes, the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks, as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy, it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n * then the `alignTicks ` will be disabled for the axis.\n *\n * Disabled for logarithmic axes.\n *\n * @sample {highcharts} highcharts/chart/alignticks-true/\n * True by default\n * @sample {highcharts} highcharts/chart/alignticks-false/\n * False\n * @sample {highstock} stock/chart/alignticks-true/\n * True by default\n * @sample {highstock} stock/chart/alignticks-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @product highcharts highstock gantt\n * @apioption chart.alignTicks\n */\n /**\n * When using multiple axes, align the thresholds. When this is true, other\n * ticks will also be aligned.\n *\n * Note that for line series and some other series types, the `threshold`\n * option is set to `null` by default. This will in turn cause their y-axis\n * to not have a threshold. In order to avoid that, set the series\n * `threshold` to 0 or another number.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false, or\n * if the axis is logarithmic, the threshold will not be aligned.\n *\n * @sample {highcharts} highcharts/chart/alignthresholds/ Set to true\n *\n * @since 10.0.0\n * @product highcharts highstock gantt\n * @apioption chart.alignThresholds\n */\n alignThresholds: false,\n /**\n * Set the overall animation for all chart updating. Animation can be\n * disabled throughout the chart by setting it to false here. It can\n * be overridden for each individual API method as a function parameter.\n * The only animation not affected by this option is the initial series\n * animation, see [plotOptions.series.animation](\n * #plotOptions.series.animation).\n *\n * The animation can either be set as a boolean or a configuration\n * object. If `true`, it will use the 'swing' jQuery easing and a\n * duration of 500 ms. If used as a configuration object, the following\n * properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds.\n *\n * - `easing`: A string reference to an easing function set on the\n * `Math` object. See\n * [the easing demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/).\n *\n * When zooming on a series with less than 100 points, the chart redraw\n * will be done with animation, but in case of more data points, it is\n * necessary to set this option to ensure animation on zoom.\n *\n * @sample {highcharts} highcharts/chart/animation-none/\n * Updating with no animation\n * @sample {highcharts} highcharts/chart/animation-duration/\n * With a longer duration\n * @sample {highcharts} highcharts/chart/animation-easing/\n * With a jQuery UI easing\n * @sample {highmaps} maps/chart/animation-none/\n * Updating with no animation\n * @sample {highmaps} maps/chart/animation-duration/\n * With a longer duration\n *\n * @type {boolean|Partial}\n * @default true\n * @apioption chart.animation\n */\n /**\n * A CSS class name to apply to the charts container `div`, allowing\n * unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption chart.className\n */\n /**\n * Event listeners for the chart.\n *\n * @apioption chart.events\n */\n /**\n * Fires when a series is added to the chart after load time, using the\n * `addSeries` method. One parameter, `event`, is passed to the\n * function, containing common event information. Through\n * `event.options` you can access the series options that were passed to\n * the `addSeries` method. Returning false prevents the series from\n * being added.\n *\n * @sample {highcharts} highcharts/chart/events-addseries/\n * Alert on add series\n * @sample {highstock} stock/chart/events-addseries/\n * Alert on add series\n *\n * @type {Highcharts.ChartAddSeriesCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.addSeries\n */\n /**\n * Fires when clicking on the plot background. One parameter, `event`,\n * is passed to the function, containing common event information.\n *\n * Information on the clicked spot can be found through `event.xAxis`\n * and `event.yAxis`, which are arrays containing the axes of each\n * dimension and each axis' value at the clicked spot. The primary axes\n * are `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * click: function(e) {\n * console.log(\n * Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', e.xAxis[0].value),\n * e.yAxis[0].value\n * )\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-click/\n * Alert coordinates on click\n * @sample {highcharts} highcharts/chart/events-container/\n * Alternatively, attach event to container\n * @sample {highstock} stock/chart/events-click/\n * Alert coordinates on click\n * @sample {highstock} highcharts/chart/events-container/\n * Alternatively, attach event to container\n * @sample {highmaps} maps/chart/events-click/\n * Record coordinates on click\n * @sample {highmaps} highcharts/chart/events-container/\n * Alternatively, attach event to container\n *\n * @type {Highcharts.ChartClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.click\n */\n /**\n * Fires when the chart is finished loading. Since v4.2.2, it also waits\n * for images to be loaded, for example from point markers. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * There is also a second parameter to the chart constructor where a\n * callback function can be passed to be executed on chart.load.\n *\n * @sample {highcharts} highcharts/chart/events-load/\n * Alert on chart load\n * @sample {highcharts} highcharts/chart/events-render/\n * Load vs Redraw vs Render\n * @sample {highstock} stock/chart/events-load/\n * Alert on chart load\n * @sample {highmaps} maps/chart/events-load/\n * Add series on chart load\n *\n * @type {Highcharts.ChartLoadCallbackFunction}\n * @context Highcharts.Chart\n * @apioption chart.events.load\n */\n /**\n * Fires when the chart is redrawn, either after a call to\n * `chart.redraw()` or after an axis, series or point is modified with\n * the `redraw` option set to `true`. One parameter, `event`, is passed\n * to the function, containing common event information.\n *\n * @sample {highcharts} highcharts/chart/events-redraw/\n * Alert on chart redraw\n * @sample {highcharts} highcharts/chart/events-render/\n * Load vs Redraw vs Render\n * @sample {highstock} stock/chart/events-redraw/\n * Alert on chart redraw when adding a series or moving the\n * zoomed range\n * @sample {highmaps} maps/chart/events-redraw/\n * Set subtitle on chart redraw\n *\n * @type {Highcharts.ChartRedrawCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.redraw\n */\n /**\n * Fires after initial load of the chart (directly after the `load`\n * event), and after each redraw (directly after the `redraw` event).\n *\n * @sample {highcharts} highcharts/chart/events-render/\n * Load vs Redraw vs Render\n *\n * @type {Highcharts.ChartRenderCallbackFunction}\n * @since 5.0.7\n * @context Highcharts.Chart\n * @apioption chart.events.render\n */\n /**\n * Fires when an area of the chart has been selected. Selection is\n * enabled by setting the chart's zoomType. One parameter, `event`, is\n * passed to the function, containing common event information. The\n * default action for the selection event is to zoom the chart to the\n * selected area. It can be prevented by calling\n * `event.preventDefault()` or return false.\n *\n * Information on the selected area can be found through `event.xAxis`\n * and `event.yAxis`, which are arrays containing the axes of each\n * dimension and each axis' min and max values. The primary axes are\n * `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * selection: function(event) {\n * // log the min and max of the primary, datetime x-axis\n * console.log(\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].min\n * ),\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].max\n * )\n * );\n * // log the min and max of the y axis\n * console.log(event.yAxis[0].min, event.yAxis[0].max);\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-selection/\n * Report on selection and reset\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highstock} stock/chart/events-selection/\n * Report on selection and reset\n * @sample {highstock} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * (Highcharts)\n *\n * @type {Highcharts.ChartSelectionCallbackFunction}\n * @apioption chart.events.selection\n */\n /**\n * The margin between the outer edge of the chart and the plot area.\n * The numbers in the array designate top, right, bottom and left\n * respectively. Use the options `marginTop`, `marginRight`,\n * `marginBottom` and `marginLeft` for shorthand setting of one option.\n *\n * By default there is no margin. The actual space is dynamically\n * calculated from the offset of axis labels, axis title, title,\n * subtitle and legend in addition to the `spacingTop`, `spacingRight`,\n * `spacingBottom` and `spacingLeft` options.\n *\n * @sample {highcharts} highcharts/chart/margins-zero/\n * Zero margins\n * @sample {highstock} stock/chart/margin-zero/\n * Zero margins\n *\n * @type {number|Array}\n * @apioption chart.margin\n */\n /**\n * The margin between the bottom outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingBottom`.\n *\n * @sample {highcharts} highcharts/chart/marginbottom/\n * 100px bottom margin\n * @sample {highstock} stock/chart/marginbottom/\n * 100px bottom margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginBottom\n */\n /**\n * The margin between the left outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingLeft`.\n *\n * @sample {highcharts} highcharts/chart/marginleft/\n * 150px left margin\n * @sample {highstock} stock/chart/marginleft/\n * 150px left margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginLeft\n */\n /**\n * The margin between the right outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingRight`.\n *\n * @sample {highcharts} highcharts/chart/marginright/\n * 100px right margin\n * @sample {highstock} stock/chart/marginright/\n * 100px right margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginRight\n */\n /**\n * The margin between the top outer edge of the chart and the plot area.\n * Use this to set a fixed pixel value for the margin as opposed to\n * the default dynamic margin. See also `spacingTop`.\n *\n * @sample {highcharts} highcharts/chart/margintop/ 100px top margin\n * @sample {highstock} stock/chart/margintop/\n * 100px top margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginTop\n */\n /**\n * Callback function to override the default function that formats all\n * the numbers in the chart. Returns a string with the formatted number.\n *\n * @sample highcharts/members/highcharts-numberformat\n * Arabic digits in Highcharts\n * @type {Highcharts.NumberFormatterCallbackFunction}\n * @since 8.0.0\n * @apioption chart.numberFormatter\n */\n /**\n * Allows setting a key to switch between zooming and panning. Can be\n * one of `alt`, `ctrl`, `meta` (the command key on Mac and Windows\n * key on Windows) or `shift`. The keys are mapped directly to the key\n * properties of the click event argument (`event.altKey`,\n * `event.ctrlKey`, `event.metaKey` and `event.shiftKey`).\n *\n * @type {string}\n * @since 4.0.3\n * @product highcharts gantt\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @apioption chart.panKey\n */\n /**\n * Allow panning in a chart. Best used with [panKey](#chart.panKey)\n * to combine zooming and panning.\n *\n * On touch devices, when the [tooltip.followTouchMove](\n * #tooltip.followTouchMove) option is `true` (default), panning\n * requires two fingers. To allow panning with one finger, set\n * `followTouchMove` to `false`.\n *\n * @sample {highcharts} highcharts/chart/pankey/ Zooming and panning\n * @sample {highstock} stock/chart/panning/ Zooming and xy panning\n */\n panning: {\n /**\n * Enable or disable chart panning.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock|highmaps} true\n */\n enabled: false,\n /**\n * Decides in what dimensions the user can pan the chart. Can be\n * one of `x`, `y`, or `xy`.\n *\n * When this option is set to `y` or `xy`, [yAxis.startOnTick](#yAxis.startOnTick)\n * and [yAxis.endOnTick](#yAxis.endOnTick) are overwritten to `false`.\n *\n * @sample {highcharts} highcharts/chart/panning-type\n * Zooming and xy panning\n *\n * @declare Highcharts.OptionsChartPanningTypeValue\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @default {highcharts|highstock} x\n * @product highcharts highstock gantt\n */\n type: 'x'\n },\n /**\n * Equivalent to [zoomType](#chart.zoomType), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `zoomType` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @since 3.0\n * @product highcharts highstock gantt\n * @deprecated\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.pinchType\n */\n /**\n * Whether to apply styled mode. When in styled mode, no presentational\n * attributes or CSS are applied to the chart SVG. Instead, CSS rules\n * are required to style the chart. The default style sheet is\n * available from `https://code.highcharts.com/css/highcharts.css`.\n *\n * [Read more in the docs](https://www.highcharts.com/docs/chart-design-and-style/style-by-css)\n * on what classes and variables are available.\n *\n * @sample highcharts/css/colors\n * Color theming with CSS\n * @sample highcharts/css/prefers-color-scheme\n * Dynamic theme based on system settings\n * @type {boolean}\n * @default false\n * @since 7.0\n * @apioption chart.styledMode\n */\n styledMode: false,\n /**\n * The corner radius of the outer chart border.\n *\n * @sample {highcharts} highcharts/chart/borderradius/\n * 20px radius\n * @sample {highstock} stock/chart/border/\n * 10px radius\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n */\n borderRadius: 0,\n /**\n * In styled mode, this sets how many colors the class names\n * should rotate between. With ten colors, series (or points) are\n * given class names like `highcharts-color-0`, `highcharts-color-1`\n * [...] `highcharts-color-9`. The equivalent in non-styled mode\n * is to set colors using the [colors](#colors) setting.\n *\n * @since 5.0.0\n */\n colorCount: 10,\n /**\n * By default, (because of memory and performance reasons) the chart does\n * not copy the data but keeps it as a reference. In some cases, this might\n * result in mutating the original data source. In order to prevent that,\n * set that property to false. Please note that changing that might decrease\n * performance, especially with bigger sets of data.\n *\n * @type {boolean}\n * @since 10.1.0\n */\n allowMutatingData: true,\n /**\n * If true, the axes will scale to the remaining visible series once\n * one series is hidden. If false, hiding and showing a series will\n * not affect the axes or the other series. For stacks, once one series\n * within the stack is hidden, the rest of the stack will close in\n * around it even if the axis is not affected.\n *\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-false/\n * False\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true-stacked/\n * True with stack\n * @sample {highstock} stock/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highstock} stock/chart/ignorehiddenseries-false/\n * False\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n ignoreHiddenSeries: true,\n /**\n * Whether to invert the axes so that the x axis is vertical and y axis\n * is horizontal. When `true`, the x axis is [reversed](#xAxis.reversed)\n * by default.\n *\n * @productdesc {highcharts}\n * If a bar series is present in the chart, it will be inverted\n * automatically. Inverting the chart doesn't have an effect if there\n * are no cartesian series in the chart, or if the chart is\n * [polar](#chart.polar).\n *\n * @sample {highcharts} highcharts/chart/inverted/\n * Inverted line\n * @sample {highstock} stock/navigator/inverted/\n * Inverted stock chart\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption chart.inverted\n */\n /**\n * The distance between the outer edge of the chart and the content,\n * like title or legend, or axis title and labels if present. The\n * numbers in the array designate top, right, bottom and left\n * respectively. Use the options spacingTop, spacingRight, spacingBottom\n * and spacingLeft options for shorthand setting of one option.\n *\n * @type {Array}\n * @see [chart.margin](#chart.margin)\n * @default [10, 10, 15, 10]\n * @since 3.0.6\n */\n spacing: [10, 10, 15, 10],\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n *\n * @since 2.2\n * @deprecated 10.2.1\n */\n resetZoomButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.resetZoomButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n */\n theme: {\n /**\n * @internal\n */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.resetZoomButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n },\n /**\n * The pixel width of the plot area border.\n *\n * @sample {highcharts} highcharts/chart/plotborderwidth/\n * 1px border\n * @sample {highstock} stock/chart/plotborder/\n * 2px border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.plotBorderWidth\n */\n /**\n * Whether to apply a drop shadow to the plot area. Requires that\n * plotBackgroundColor be set. The shadow can be an object configuration\n * containing `color`, `offsetX`, `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/chart/plotshadow/\n * Plot shadow\n * @sample {highstock} stock/chart/plotshadow/\n * Plot shadow\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption chart.plotShadow\n */\n /**\n * When true, cartesian charts like line, spline, area and column are\n * transformed into the polar coordinate system. This produces _polar\n * charts_, also known as _radar charts_.\n *\n * @sample {highcharts} highcharts/demo/polar/\n * Polar chart\n * @sample {highcharts} highcharts/demo/polar-wind-rose/\n * Wind rose, stacked polar column chart\n * @sample {highcharts} highcharts/demo/polar-spider/\n * Spider web chart\n * @sample {highcharts} highcharts/parallel-coordinates/polar/\n * Star plot, multivariate data in a polar chart\n *\n * @type {boolean}\n * @default false\n * @since 2.3.0\n * @product highcharts\n * @requires highcharts-more\n * @apioption chart.polar\n */\n /**\n * Whether to reflow the chart to fit the width of the container div\n * on resizing the window.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * True by default\n * @sample {highcharts} highcharts/chart/reflow-false/\n * False\n * @sample {highstock} stock/chart/reflow-true/\n * True by default\n * @sample {highstock} stock/chart/reflow-false/\n * False\n * @sample {highmaps} maps/chart/reflow-true/\n * True by default\n * @sample {highmaps} maps/chart/reflow-false/\n * False\n *\n * @since 2.1\n */\n reflow: true,\n /**\n * The HTML element where the chart will be rendered. If it is a string,\n * the element by that id is used. The HTML element can also be passed\n * by direct reference, or as the first argument of the chart\n * constructor, in which case the option is not needed.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * String\n * @sample {highcharts} highcharts/chart/renderto-object/\n * Object reference\n * @sample {highstock} stock/chart/renderto-string/\n * String\n * @sample {highstock} stock/chart/renderto-object/\n * Object reference\n *\n * @type {string|Highcharts.HTMLDOMElement}\n * @apioption chart.renderTo\n */\n /**\n * The background color of the marker square when selecting (zooming\n * in on) an area of the chart.\n *\n * @see In styled mode, the selection marker fill is set with the\n * `.highcharts-selection-marker` class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(51,92,173,0.25)\n * @since 2.1.7\n * @apioption chart.selectionMarkerFill\n */\n /**\n * Whether to apply a drop shadow to the global series group. This causes\n * all the series to have the same shadow. Contrary to the `series.shadow`\n * option, this prevents items from casting shadows on each other, like for\n * others series in a stack. The shadow can be an object configuration\n * containing `color`, `offsetX`, `offsetY`, `opacity` and `width`.\n *\n * @sample highcharts/chart/seriesgroupshadow/ Shadow\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption chart.shadow\n */\n /**\n * Whether to apply a drop shadow to the outer chart area. Requires\n * that backgroundColor be set. The shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity` and\n * `width`.\n *\n * @sample {highcharts} highcharts/chart/shadow/\n * Shadow\n * @sample {highstock} stock/chart/shadow/\n * Shadow\n * @sample {highmaps} maps/chart/border/\n * Chart border and shadow\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption chart.shadow\n */\n /**\n * Whether to show the axes initially. This only applies to empty charts\n * where series are added dynamically, as axes are automatically added\n * to cartesian series.\n *\n * @sample {highcharts} highcharts/chart/showaxes-false/\n * False by default\n * @sample {highcharts} highcharts/chart/showaxes-true/\n * True\n *\n * @type {boolean}\n * @since 1.2.5\n * @product highcharts gantt\n * @apioption chart.showAxes\n */\n /**\n * The space between the bottom edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highstock} stock/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 15\n * @since 2.1\n * @apioption chart.spacingBottom\n */\n /**\n * The space between the left edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highstock} stock/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingLeft\n */\n /**\n * The space between the right edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingright-100/\n * Spacing set to 100\n * @sample {highcharts} highcharts/chart/spacingright-legend/\n * Legend in right position with default spacing\n * @sample {highstock} stock/chart/spacingright/\n * Spacing set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingRight\n */\n /**\n * The space between the top edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingtop-100/\n * A top spacing of 100\n * @sample {highcharts} highcharts/chart/spacingtop-10/\n * Floating chart title makes the plot area align to the default\n * spacingTop of 10.\n * @sample {highstock} stock/chart/spacingtop/\n * A top spacing of 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingTop\n */\n /**\n * Additional CSS styles to apply inline to the container `div` and the root\n * SVG.\n *\n * Since v11, the root font size is 1rem by default, and all child element\n * are given a relative `em` font size by default. This allows implementers\n * to control all the chart's font sizes by only setting the root level.\n *\n * @see In styled mode, general chart styles can be set with the\n * `.highcharts-root` class.\n * @sample {highcharts} highcharts/chart/style-serif-font/\n * Using a serif type font\n * @sample {highcharts} highcharts/members/relative-font-size/\n * Relative font sizes\n * @sample {highcharts} highcharts/css/em/\n * Styled mode with relative font sizes\n * @sample {highstock} stock/chart/style/\n * Using a serif type font\n * @sample {highmaps} maps/chart/style-serif-font/\n * Using a serif type font\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontFamily\": Helvetica, Arial, sans-serif\",\"fontSize\":\"1rem\"}\n * @apioption chart.style\n */\n /**\n * The default series type for the chart. Can be any of the chart types\n * listed under [plotOptions](#plotOptions) and [series](#series) or can\n * be a series provided by an additional module.\n *\n * In TypeScript this option has no effect in sense of typing and\n * instead the `type` option must always be set in the series.\n *\n * @sample {highcharts} highcharts/chart/type-bar/\n * Bar\n * @sample {highstock} stock/chart/type/\n * Areaspline\n * @sample {highmaps} maps/chart/type-mapline/\n * Mapline\n *\n * @type {string}\n * @default {highcharts} line\n * @default {highstock} line\n * @default {highmaps} map\n * @since 2.1.0\n * @apioption chart.type\n */\n type: 'line',\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @see [panKey](#chart.panKey)\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * None by default\n * @sample {highcharts} highcharts/chart/zoomtype-x/\n * X\n * @sample {highcharts} highcharts/chart/zoomtype-y/\n * Y\n * @sample {highcharts} highcharts/chart/zoomtype-xy/\n * Xy\n * @sample {highcharts} highcharts/chart/zoomtype-polar/\n * Zoom on polar chart\n * @sample {highstock} stock/demo/basic-line/\n * None by default\n * @sample {highstock} stock/chart/zoomtype-x/\n * X\n * @sample {highstock} stock/chart/zoomtype-y/\n * Y\n * @sample {highstock} stock/chart/zoomtype-xy/\n * Xy\n * @sample {highmaps} maps/chart/zoomtype-xy/\n * Map with selection zoom\n *\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @deprecated\n * @apioption chart.zoomType\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zoomType](#chart.zoomType). When enabled, two-finger pinch\n * will still work as set up by [chart.pinchType](#chart.pinchType).\n * However, `zoomBySingleTouch` will interfere with touch-dragging the\n * chart to read the tooltip. And especially when vertical zooming is\n * enabled, it will make it hard to scroll vertically on the page.\n * @since 9.0.0\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n * @product highcharts highstock gantt\n * @deprecated\n */\n zoomBySingleTouch: false,\n /**\n * Chart zooming options.\n * @since 10.2.1\n */\n zooming: {\n /**\n * Equivalent to [type](#chart.zooming.type), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `type` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.pinchType\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @declare Highcharts.OptionsChartZoomingTypeValue\n * @type {string}\n * @default {highcharts} undefined\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.type\n */\n /**\n * Set a key to hold when dragging to zoom the chart. This is useful to\n * avoid zooming while moving points. Should be set different than\n * [chart.panKey](#chart.panKey).\n *\n * @type {string}\n * @default {highcharts} undefined\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @requires modules/draggable-points\n * @apioption chart.zooming.key\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zooming.type](#chart.zooming.type). When enabled, two-finger\n * pinch will still work as set up by [chart.zooming.pinchType]\n * (#chart.zooming.pinchType). However, `singleTouch` will interfere\n * with touch-dragging the chart to read the tooltip. And especially\n * when vertical zooming is enabled, it will make it hard to scroll\n * vertically on the page.\n *\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n *\n * @product highcharts highstock gantt\n */\n singleTouch: false,\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n */\n resetButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.zooming.resetButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n * @since 10.2.1\n */\n theme: {\n /** @internal */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n * @since 10.2.1\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.zooming.resetButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n }\n },\n /**\n * An explicit width for the chart. By default (when `null`) the width\n * is calculated from the offset width of the containing element.\n *\n * @sample {highcharts} highcharts/chart/width/\n * 800px wide\n * @sample {highstock} stock/chart/width/\n * 800px wide\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n *\n * @type {null|number|string}\n */\n width: null,\n /**\n * An explicit height for the chart. If a _number_, the height is\n * given in pixels. If given a _percentage string_ (for example\n * `'56%'`), the height is given as the percentage of the actual chart\n * width. This allows for preserving the aspect ratio across responsive\n * sizes.\n *\n * By default (when `null`) the height is calculated from the offset\n * height of the containing element, or 400 pixels if the containing\n * element's height is 0.\n *\n * @sample {highcharts} highcharts/chart/height/\n * 500px height\n * @sample {highstock} stock/chart/height/\n * 300px height\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n * @sample highcharts/chart/height-percent/\n * Highcharts with percentage height\n *\n * @type {null|number|string}\n */\n height: null,\n /**\n * The color of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/bordercolor/\n * Brown border\n * @sample {highstock} stock/chart/border/\n * Brown border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#334eff\" /* Palette.highlightColor80 */,\n /**\n * The pixel width of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/borderwidth/\n * 5px border\n * @sample {highstock} stock/chart/border/\n * 2px border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.borderWidth\n */\n /**\n * The background color or gradient for the outer chart area.\n *\n * @see In styled mode, the background is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/backgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/backgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/backgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/backgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The background color or gradient for the plot area.\n *\n * @see In styled mode, the plot background is set with the\n * `.highcharts-plot-background` class.\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption chart.plotBackgroundColor\n */\n /**\n * The URL for an image to use as the plot background. To set an image\n * as the background for the entire chart, set a CSS background image\n * to the container element. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export server.\n *\n * @see In styled mode, a plot background image can be set with the\n * `.highcharts-plot-background` class and a [custom pattern](\n * https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundimage/\n * Skies\n * @sample {highstock} stock/chart/plotbackgroundimage/\n * Skies\n *\n * @type {string}\n * @apioption chart.plotBackgroundImage\n */\n /**\n * The color of the inner chart or plot area border.\n *\n * @see In styled mode, a plot border stroke can be set with the\n * `.highcharts-plot-border` class.\n *\n * @sample {highcharts} highcharts/chart/plotbordercolor/\n * Blue border\n * @sample {highstock} stock/chart/plotborder/\n * Blue border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n plotBorderColor: \"#cccccc\" /* Palette.neutralColor20 */\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ChartDefaults;\n });\n _registerModule(_modules, 'Core/Color/Color.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { isNumber, merge, pInt } = U;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Handle color operations. Some object methods are chainable.\n *\n * @class\n * @name Highcharts.Color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n class Color {\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Creates a color instance out of a color string or object.\n *\n * @function Highcharts.Color.parse\n *\n * @param {Highcharts.ColorType} [input]\n * The input color in either rbga or hex format.\n *\n * @return {Highcharts.Color}\n * Color instance.\n */\n static parse(input) {\n return input ? new Color(input) : Color.None;\n }\n /* *\n *\n * Constructor\n *\n * */\n constructor(input) {\n this.rgba = [NaN, NaN, NaN, NaN];\n this.input = input;\n const GlobalColor = H.Color;\n // Backwards compatibility, allow class overwrite\n if (GlobalColor && GlobalColor !== Color) {\n return new GlobalColor(input);\n }\n this.init(input);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Parse the input color to rgba array\n *\n * @private\n * @function Highcharts.Color#init\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n init(input) {\n let result, rgba, i, parser;\n // Gradients\n if (typeof input === 'object' &&\n typeof input.stops !== 'undefined') {\n this.stops = input.stops.map((stop) => new Color(stop[1]));\n // Solid colors\n }\n else if (typeof input === 'string') {\n this.input = input = (Color.names[input.toLowerCase()] || input);\n // Bitmasking as input[0] is not working for legacy IE.\n if (input.charAt(0) === '#') {\n const len = input.length, col = parseInt(input.substr(1), 16);\n // Handle long-form, e.g. #AABBCC\n if (len === 7) {\n rgba = [\n (col & 0xFF0000) >> 16,\n (col & 0xFF00) >> 8,\n (col & 0xFF),\n 1\n ];\n // Handle short-form, e.g. #ABC\n // In short form, the value is assumed to be the same\n // for both nibbles for each component. e.g. #ABC = #AABBCC\n }\n else if (len === 4) {\n rgba = [\n (((col & 0xF00) >> 4) |\n (col & 0xF00) >> 8),\n (((col & 0xF0) >> 4) |\n (col & 0xF0)),\n ((col & 0xF) << 4) | (col & 0xF),\n 1\n ];\n }\n }\n // Otherwise, check regex parsers\n if (!rgba) {\n i = Color.parsers.length;\n while (i-- && !rgba) {\n parser = Color.parsers[i];\n result = parser.regex.exec(input);\n if (result) {\n rgba = parser.parse(result);\n }\n }\n }\n }\n if (rgba) {\n this.rgba = rgba;\n }\n }\n /**\n * Return the color or gradient stops in the specified format\n *\n * @function Highcharts.Color#get\n *\n * @param {string} [format]\n * Possible values are 'a', 'rgb', 'rgba' (default).\n *\n * @return {Highcharts.ColorType}\n * This color as a string or gradient stops.\n */\n get(format) {\n const input = this.input, rgba = this.rgba;\n if (typeof input === 'object' &&\n typeof this.stops !== 'undefined') {\n const ret = merge(input);\n ret.stops = [].slice.call(ret.stops);\n this.stops.forEach((stop, i) => {\n ret.stops[i] = [\n ret.stops[i][0],\n stop.get(format)\n ];\n });\n return ret;\n }\n // it's NaN if gradient colors on a column chart\n if (rgba && isNumber(rgba[0])) {\n if (format === 'rgb' || (!format && rgba[3] === 1)) {\n return 'rgb(' + rgba[0] + ',' + rgba[1] + ',' + rgba[2] + ')';\n }\n if (format === 'a') {\n return `${rgba[3]}`;\n }\n return 'rgba(' + rgba.join(',') + ')';\n }\n return input;\n }\n /**\n * Brighten the color instance.\n *\n * @function Highcharts.Color#brighten\n *\n * @param {number} alpha\n * The alpha value.\n *\n * @return {Highcharts.Color}\n * This color with modifications.\n */\n brighten(alpha) {\n const rgba = this.rgba;\n if (this.stops) {\n this.stops.forEach(function (stop) {\n stop.brighten(alpha);\n });\n }\n else if (isNumber(alpha) && alpha !== 0) {\n for (let i = 0; i < 3; i++) {\n rgba[i] += pInt(alpha * 255);\n if (rgba[i] < 0) {\n rgba[i] = 0;\n }\n if (rgba[i] > 255) {\n rgba[i] = 255;\n }\n }\n }\n return this;\n }\n /**\n * Set the color's opacity to a given alpha value.\n *\n * @function Highcharts.Color#setOpacity\n *\n * @param {number} alpha\n * Opacity between 0 and 1.\n *\n * @return {Highcharts.Color}\n * Color with modifications.\n */\n setOpacity(alpha) {\n this.rgba[3] = alpha;\n return this;\n }\n /**\n * Return an intermediate color between two colors.\n *\n * @function Highcharts.Color#tweenTo\n *\n * @param {Highcharts.Color} to\n * The color object to tween to.\n *\n * @param {number} pos\n * The intermediate position, where 0 is the from color (current color\n * item), and 1 is the `to` color.\n *\n * @return {Highcharts.ColorType}\n * The intermediate color in rgba notation, or unsupported type.\n */\n tweenTo(to, pos) {\n const fromRgba = this.rgba, toRgba = to.rgba;\n // Unsupported color, return to-color (#3920, #7034)\n if (!isNumber(fromRgba[0]) || !isNumber(toRgba[0])) {\n return to.input || 'none';\n }\n // Check for has alpha, because rgba colors perform worse due to\n // lack of support in WebKit.\n const hasAlpha = (toRgba[3] !== 1 || fromRgba[3] !== 1);\n return (hasAlpha ? 'rgba(' : 'rgb(') +\n Math.round(toRgba[0] + (fromRgba[0] - toRgba[0]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[1] + (fromRgba[1] - toRgba[1]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[2] + (fromRgba[2] - toRgba[2]) * (1 - pos)) +\n (hasAlpha ?\n (',' +\n (toRgba[3] + (fromRgba[3] - toRgba[3]) * (1 - pos))) :\n '') +\n ')';\n }\n }\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * Collection of named colors. Can be extended from the outside by adding\n * colors to Highcharts.Color.names.\n * @private\n */\n Color.names = {\n white: '#ffffff',\n black: '#000000'\n };\n /**\n * Collection of parsers. This can be extended from the outside by pushing\n * parsers to `Color.parsers`.\n */\n Color.parsers = [{\n // RGBA color\n // eslint-disable-next-line max-len\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function (result) {\n return [\n pInt(result[1]),\n pInt(result[2]),\n pInt(result[3]),\n parseFloat(result[4], 10)\n ];\n }\n }, {\n // RGB color\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function (result) {\n return [pInt(result[1]), pInt(result[2]), pInt(result[3]), 1];\n }\n }];\n // Must be last static member for init cycle\n Color.None = new Color('');\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A valid color to be parsed and handled by Highcharts. Highcharts internally\n * supports hex colors like `#ffffff`, rgb colors like `rgb(255,255,255)` and\n * rgba colors like `rgba(255,255,255,1)`. Other colors may be supported by the\n * browsers and displayed correctly, but Highcharts is not able to process them\n * and apply concepts like opacity and brightening.\n *\n * @typedef {string} Highcharts.ColorString\n */\n /**\n * A valid color type than can be parsed and handled by Highcharts. It can be a\n * color string, a gradient object, or a pattern object.\n *\n * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType\n */\n /**\n * Gradient options instead of a solid color.\n *\n * @example\n * // Linear gradient used as a color option\n * color: {\n * linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n * stops: [\n * [0, '#003399'], // start\n * [0.5, '#ffffff'], // middle\n * [1, '#3366AA'] // end\n * ]\n * }\n *\n * @interface Highcharts.GradientColorObject\n */ /**\n * Holds an object that defines the start position and the end position relative\n * to the shape.\n * @name Highcharts.GradientColorObject#linearGradient\n * @type {Highcharts.LinearGradientColorObject|undefined}\n */ /**\n * Holds an object that defines the center position and the radius.\n * @name Highcharts.GradientColorObject#radialGradient\n * @type {Highcharts.RadialGradientColorObject|undefined}\n */ /**\n * The first item in each tuple is the position in the gradient, where 0 is the\n * start of the gradient and 1 is the end of the gradient. Multiple stops can be\n * applied. The second item is the color for each stop. This color can also be\n * given in the rgba format.\n * @name Highcharts.GradientColorObject#stops\n * @type {Array}\n */\n /**\n * Color stop tuple.\n *\n * @see Highcharts.GradientColorObject\n *\n * @interface Highcharts.GradientColorStopObject\n */ /**\n * @name Highcharts.GradientColorStopObject#0\n * @type {number}\n */ /**\n * @name Highcharts.GradientColorStopObject#1\n * @type {Highcharts.ColorString}\n */ /**\n * @name Highcharts.GradientColorStopObject#color\n * @type {Highcharts.Color|undefined}\n */\n /**\n * Defines the start position and the end position for a gradient relative\n * to the shape. Start position (x1, y1) and end position (x2, y2) are relative\n * to the shape, where 0 means top/left and 1 is bottom/right.\n *\n * @interface Highcharts.LinearGradientColorObject\n */ /**\n * Start horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x1\n * @type {number}\n */ /**\n * End horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x2\n * @type {number}\n */ /**\n * Start vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y1\n * @type {number}\n */ /**\n * End vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y2\n * @type {number}\n */\n /**\n * Defines the center position and the radius for a gradient.\n *\n * @interface Highcharts.RadialGradientColorObject\n */ /**\n * Center horizontal position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cx\n * @type {number}\n */ /**\n * Center vertical position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cy\n * @type {number}\n */ /**\n * Radius relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#r\n * @type {number}\n */\n /**\n * Creates a color instance out of a color string.\n *\n * @function Highcharts.color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n *\n * @return {Highcharts.Color}\n * Color instance\n */\n (''); // detach doclets above\n\n return Color;\n });\n _registerModule(_modules, 'Core/Color/Palettes.js', [], function () {\n /**\n * Series palettes for Highcharts. Series colors are defined in highcharts.css.\n * **Do not edit this file!** This file is generated using the 'gulp palette' task.\n */\n const SeriesPalettes = {\n /**\n * Colors for data series and points\n */\n colors: [\n '#2caffe',\n '#544fc5',\n '#00e272',\n '#fe6a35',\n '#6b8abc',\n '#d568fb',\n '#2ee0ca',\n '#fa4b42',\n '#feb56a',\n '#91e8e1'\n ]\n };\n\n return SeriesPalettes;\n });\n _registerModule(_modules, 'Core/Time.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { win } = H;\n const { defined, error, extend, isObject, merge, objectEach, pad, pick, splat, timeUnits } = U;\n /* *\n *\n * Constants\n *\n * */\n const hasNewSafariBug = H.isSafari &&\n win.Intl &&\n win.Intl.DateTimeFormat.prototype.formatRange;\n // To do: Remove this when we no longer need support for Safari < v14.1\n const hasOldSafariBug = H.isSafari &&\n win.Intl &&\n !win.Intl.DateTimeFormat.prototype.formatRange;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Time class. Time settings are applied in general for each page using\n * `Highcharts.setOptions`, or individually for each Chart item through the\n * [time](https://api.highcharts.com/highcharts/time) options set.\n *\n * The Time object is available from {@link Highcharts.Chart#time},\n * which refers to `Highcharts.time` if no individual time settings are\n * applied.\n *\n * @example\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n *\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n *\n * @since 6.0.5\n *\n * @class\n * @name Highcharts.Time\n *\n * @param {Highcharts.TimeOptions} [options]\n * Time options as defined in [chart.options.time](/highcharts/time).\n */\n class Time {\n /* *\n *\n * Constructors\n *\n * */\n constructor(options) {\n /* *\n *\n * Properties\n *\n * */\n this.options = {};\n this.useUTC = false;\n this.variableTimezone = false;\n this.Date = win.Date;\n /**\n * Get the time zone offset based on the current timezone information as\n * set in the global options.\n *\n * @function Highcharts.Time#getTimezoneOffset\n *\n * @param {number} timestamp\n * The JavaScript timestamp to inspect.\n *\n * @return {number}\n * The timezone offset in minutes compared to UTC.\n */\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n this.update(options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Time units used in `Time.get` and `Time.set`\n *\n * @typedef {\"Date\"|\"Day\"|\"FullYear\"|\"Hours\"|\"Milliseconds\"|\"Minutes\"|\"Month\"|\"Seconds\"} Highcharts.TimeUnitValue\n */\n /**\n * Get the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.getXXX / Date.getUTCXXX`, so instead of calling\n * `date.getHours()` or `date.getUTCHours()` we will call\n * `time.get('Hours')`.\n *\n * @function Highcharts.Time#get\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n *\n * @return {number}\n * The given time unit\n */\n get(unit, date) {\n if (this.variableTimezone || this.timezoneOffset) {\n const realMs = date.getTime();\n const ms = realMs - this.getTimezoneOffset(date);\n date.setTime(ms); // Temporary adjust to timezone\n const ret = date['getUTC' + unit]();\n date.setTime(realMs); // Reset\n return ret;\n }\n // UTC time with no timezone handling\n if (this.useUTC) {\n return date['getUTC' + unit]();\n }\n // Else, local time\n return date['get' + unit]();\n }\n /**\n * Set the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.setXXX / Date.setUTCXXX`, so instead of calling\n * `date.setHours(0)` or `date.setUTCHours(0)` we will call\n * `time.set('Hours', 0)`.\n *\n * @function Highcharts.Time#set\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n * @param {number} value\n *\n * @return {number}\n * The epoch milliseconds of the updated date\n */\n set(unit, date, value) {\n // UTC time with timezone handling\n if (this.variableTimezone || this.timezoneOffset) {\n // For lower order time units, just set it directly using UTC\n // time\n if (unit === 'Milliseconds' ||\n unit === 'Seconds' ||\n (unit === 'Minutes' &&\n this.getTimezoneOffset(date) % 3600000 === 0) // #13961\n ) {\n return date['setUTC' + unit](value);\n }\n // Higher order time units need to take the time zone into\n // account\n // Adjust by timezone\n const offset = this.getTimezoneOffset(date);\n let ms = date.getTime() - offset;\n date.setTime(ms);\n date['setUTC' + unit](value);\n const newOffset = this.getTimezoneOffset(date);\n ms = date.getTime() + newOffset;\n return date.setTime(ms);\n }\n // UTC time with no timezone handling\n if (this.useUTC ||\n // leap calculation in UTC only\n (hasNewSafariBug && unit === 'FullYear')) {\n return date['setUTC' + unit](value);\n }\n // Else, local time\n return date['set' + unit](value);\n }\n /**\n * Update the Time object with current options. It is called internally on\n * initializing Highcharts, after running `Highcharts.setOptions` and on\n * `Chart.update`.\n *\n * @private\n * @function Highcharts.Time#update\n *\n * @param {Highcharts.TimeOptions} [options]\n *\n */\n update(options = {}) {\n const useUTC = pick(options.useUTC, true);\n this.options = options = merge(true, this.options, options);\n // Allow using a different Date class\n this.Date = options.Date || win.Date || Date;\n this.useUTC = useUTC;\n this.timezoneOffset = (useUTC && options.timezoneOffset) || void 0;\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n /*\n * The time object has options allowing for variable time zones, meaning\n * the axis ticks or series data needs to consider this.\n */\n this.variableTimezone = useUTC && !!(options.getTimezoneOffset ||\n options.timezone);\n }\n /**\n * Make a time and returns milliseconds. Interprets the inputs as UTC time,\n * local time or a specific timezone time depending on the current time\n * settings.\n *\n * @function Highcharts.Time#makeTime\n *\n * @param {number} year\n * The year\n *\n * @param {number} month\n * The month. Zero-based, so January is 0.\n *\n * @param {number} [date=1]\n * The day of the month\n *\n * @param {number} [hours=0]\n * The hour of the day, 0-23.\n *\n * @param {number} [minutes=0]\n * The minutes\n *\n * @param {number} [seconds=0]\n * The seconds\n *\n * @return {number}\n * The time in milliseconds since January 1st 1970.\n */\n makeTime(year, month, date, hours, minutes, seconds) {\n let d, offset, newOffset;\n if (this.useUTC) {\n d = this.Date.UTC.apply(0, arguments);\n offset = this.getTimezoneOffset(d);\n d += offset;\n newOffset = this.getTimezoneOffset(d);\n if (offset !== newOffset) {\n d += newOffset - offset;\n // A special case for transitioning from summer time to winter time.\n // When the clock is set back, the same time is repeated twice, i.e.\n // 02:30 am is repeated since the clock is set back from 3 am to\n // 2 am. We need to make the same time as local Date does.\n }\n else if (offset - 36e5 === this.getTimezoneOffset(d - 36e5) &&\n !hasOldSafariBug) {\n d -= 36e5;\n }\n }\n else {\n d = new this.Date(year, month, pick(date, 1), pick(hours, 0), pick(minutes, 0), pick(seconds, 0)).getTime();\n }\n return d;\n }\n /**\n * Sets the getTimezoneOffset function. If the `timezone` option is set, a\n * default getTimezoneOffset function with that timezone is returned. If\n * a `getTimezoneOffset` option is defined, it is returned. If neither are\n * specified, the function using the `timezoneOffset` option or 0 offset is\n * returned.\n *\n * @private\n * @function Highcharts.Time#timezoneOffsetFunction\n *\n * @return {Function}\n * A getTimezoneOffset function\n */\n timezoneOffsetFunction() {\n const time = this, options = this.options, getTimezoneOffset = options.getTimezoneOffset, moment = options.moment || win.moment;\n if (!this.useUTC) {\n return function (timestamp) {\n return new Date(timestamp.toString()).getTimezoneOffset() * 60000;\n };\n }\n if (options.timezone) {\n if (!moment) {\n // getTimezoneOffset-function stays undefined because it depends\n // on Moment.js\n error(25);\n }\n else {\n return function (timestamp) {\n return -moment.tz(timestamp, options.timezone).utcOffset() * 60000;\n };\n }\n }\n // If not timezone is set, look for the getTimezoneOffset callback\n if (this.useUTC && getTimezoneOffset) {\n return function (timestamp) {\n return getTimezoneOffset(timestamp.valueOf()) * 60000;\n };\n }\n // Last, use the `timezoneOffset` option if set\n return function () {\n return (time.timezoneOffset || 0) * 60000;\n };\n }\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970)\n * into a human readable date string. The available format keys are listed\n * below. Additional formats can be given in the\n * {@link Highcharts.dateFormats} hook.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @example\n * const time = new Highcharts.Time();\n * const s = time.dateFormat('%Y-%m-%d %H:%M:%S', Date.UTC(2020, 0, 1));\n * console.log(s); // => 2020-01-01 00:00:00\n *\n * @function Highcharts.Time#dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are\n * prefixed with %.\n *\n * @param {number} [timestamp]\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n dateFormat(format, timestamp, capitalize) {\n if (!defined(timestamp) || isNaN(timestamp)) {\n return (H.defaultOptions.lang &&\n H.defaultOptions.lang.invalidDate ||\n '');\n }\n format = pick(format, '%Y-%m-%d %H:%M:%S');\n const time = this, date = new this.Date(timestamp), \n // get the basic time values\n hours = this.get('Hours', date), day = this.get('Day', date), dayOfMonth = this.get('Date', date), month = this.get('Month', date), fullYear = this.get('FullYear', date), lang = H.defaultOptions.lang, langWeekdays = (lang && lang.weekdays), shortWeekdays = (lang && lang.shortWeekdays), \n // List all format keys. Custom formats can be added from the\n // outside.\n replacements = extend({\n // Day\n // Short weekday, like 'Mon'\n a: shortWeekdays ?\n shortWeekdays[day] :\n langWeekdays[day].substr(0, 3),\n // Long weekday, like 'Monday'\n A: langWeekdays[day],\n // Two digit day of the month, 01 to 31\n d: pad(dayOfMonth),\n // Day of the month, 1 through 31\n e: pad(dayOfMonth, 2, ' '),\n // Day of the week, 0 through 6\n w: day,\n // Week (none implemented)\n // 'W': weekNumber(),\n // Month\n // Short month, like 'Jan'\n b: lang.shortMonths[month],\n // Long month, like 'January'\n B: lang.months[month],\n // Two digit month number, 01 through 12\n m: pad(month + 1),\n // Month number, 1 through 12 (#8150)\n o: month + 1,\n // Year\n // Two digits year, like 09 for 2009\n y: fullYear.toString().substr(2, 2),\n // Four digits year, like 2009\n Y: fullYear,\n // Time\n // Two digits hours in 24h format, 00 through 23\n H: pad(hours),\n // Hours in 24h format, 0 through 23\n k: hours,\n // Two digits hours in 12h format, 00 through 11\n I: pad((hours % 12) || 12),\n // Hours in 12h format, 1 through 12\n l: (hours % 12) || 12,\n // Two digits minutes, 00 through 59\n M: pad(this.get('Minutes', date)),\n // Upper case AM or PM\n p: hours < 12 ? 'AM' : 'PM',\n // Lower case AM or PM\n P: hours < 12 ? 'am' : 'pm',\n // Two digits seconds, 00 through 59\n S: pad(date.getSeconds()),\n // Milliseconds (naming from Ruby)\n L: pad(Math.floor(timestamp % 1000), 3)\n }, H.dateFormats);\n // Do the replaces\n objectEach(replacements, function (val, key) {\n // Regex would do it in one line, but this is faster\n while (format.indexOf('%' + key) !== -1) {\n format = format.replace('%' + key, typeof val === 'function' ? val.call(time, timestamp) : val);\n }\n });\n // Optionally capitalize the string and return\n return capitalize ?\n (format.substr(0, 1).toUpperCase() +\n format.substr(1)) :\n format;\n }\n /**\n * Resolve legacy formats of dateTimeLabelFormats (strings and arrays) into\n * an object.\n * @private\n * @param {string|Array|Highcharts.Dictionary} f\n * General format description\n * @return {Highcharts.Dictionary}\n * The object definition\n */\n resolveDTLFormat(f) {\n if (!isObject(f, true)) { // check for string or array\n f = splat(f);\n return {\n main: f[0],\n from: f[1],\n to: f[2]\n };\n }\n return f;\n }\n /**\n * Return an array with time positions distributed on round time values\n * right and right after min and max. Used in datetime axes as well as for\n * grouping data on a datetime axis.\n *\n * @function Highcharts.Time#getTimeTicks\n *\n * @param {Highcharts.TimeNormalizedObject} normalizedInterval\n * The interval in axis values (ms) and the count\n *\n * @param {number} [min]\n * The minimum in axis values\n *\n * @param {number} [max]\n * The maximum in axis values\n *\n * @param {number} [startOfWeek=1]\n *\n * @return {Highcharts.AxisTickPositionsArray}\n * Time positions\n */\n getTimeTicks(normalizedInterval, min, max, startOfWeek) {\n const time = this, Date = time.Date, tickPositions = [], higherRanks = {}, \n // When crossing DST, use the max. Resolves #6278.\n minDate = new Date(min), interval = normalizedInterval.unitRange, count = normalizedInterval.count || 1;\n let i, minYear, // used in months and years as a basis for Date.UTC()\n variableDayLength, minDay;\n startOfWeek = pick(startOfWeek, 1);\n if (defined(min)) { // #1300\n time.set('Milliseconds', minDate, interval >= timeUnits.second ?\n 0 : // #3935\n count * Math.floor(time.get('Milliseconds', minDate) / count)); // #3652, #3654\n if (interval >= timeUnits.second) { // second\n time.set('Seconds', minDate, interval >= timeUnits.minute ?\n 0 : // #3935\n count * Math.floor(time.get('Seconds', minDate) / count));\n }\n if (interval >= timeUnits.minute) { // minute\n time.set('Minutes', minDate, interval >= timeUnits.hour ?\n 0 :\n count * Math.floor(time.get('Minutes', minDate) / count));\n }\n if (interval >= timeUnits.hour) { // hour\n time.set('Hours', minDate, interval >= timeUnits.day ?\n 0 :\n count * Math.floor(time.get('Hours', minDate) / count));\n }\n if (interval >= timeUnits.day) { // day\n time.set('Date', minDate, interval >= timeUnits.month ?\n 1 :\n Math.max(1, count * Math.floor(time.get('Date', minDate) / count)));\n }\n if (interval >= timeUnits.month) { // month\n time.set('Month', minDate, interval >= timeUnits.year ? 0 :\n count * Math.floor(time.get('Month', minDate) / count));\n minYear = time.get('FullYear', minDate);\n }\n if (interval >= timeUnits.year) { // year\n minYear -= minYear % count;\n time.set('FullYear', minDate, minYear);\n }\n // week is a special case that runs outside the hierarchy\n if (interval === timeUnits.week) {\n // get start of current week, independent of count\n minDay = time.get('Day', minDate);\n time.set('Date', minDate, (time.get('Date', minDate) -\n minDay + startOfWeek +\n // We don't want to skip days that are before\n // startOfWeek (#7051)\n (minDay < startOfWeek ? -7 : 0)));\n }\n // Get basics for variable time spans\n minYear = time.get('FullYear', minDate);\n const minMonth = time.get('Month', minDate), minDateDate = time.get('Date', minDate), minHours = time.get('Hours', minDate);\n // Redefine min to the floored/rounded minimum time (#7432)\n min = minDate.getTime();\n // Handle local timezone offset\n if ((time.variableTimezone || !time.useUTC) && defined(max)) {\n // Detect whether we need to take the DST crossover into\n // consideration. If we're crossing over DST, the day length may\n // be 23h or 25h and we need to compute the exact clock time for\n // each tick instead of just adding hours. This comes at a cost,\n // so first we find out if it is needed (#4951).\n variableDayLength = (\n // Long range, assume we're crossing over.\n max - min > 4 * timeUnits.month ||\n // Short range, check if min and max are in different time\n // zones.\n time.getTimezoneOffset(min) !==\n time.getTimezoneOffset(max));\n }\n // Iterate and add tick positions at appropriate values\n let t = minDate.getTime();\n i = 1;\n while (t < max) {\n tickPositions.push(t);\n // if the interval is years, use Date.UTC to increase years\n if (interval === timeUnits.year) {\n t = time.makeTime(minYear + i * count, 0);\n // if the interval is months, use Date.UTC to increase months\n }\n else if (interval === timeUnits.month) {\n t = time.makeTime(minYear, minMonth + i * count);\n // if we're using global time, the interval is not fixed as it\n // jumps one hour at the DST crossover\n }\n else if (variableDayLength &&\n (interval === timeUnits.day || interval === timeUnits.week)) {\n t = time.makeTime(minYear, minMonth, minDateDate +\n i * count * (interval === timeUnits.day ? 1 : 7));\n }\n else if (variableDayLength &&\n interval === timeUnits.hour &&\n count > 1) {\n // make sure higher ranks are preserved across DST (#6797,\n // #7621)\n t = time.makeTime(minYear, minMonth, minDateDate, minHours + i * count);\n // else, the interval is fixed and we use simple addition\n }\n else {\n t += interval * count;\n }\n i++;\n }\n // push the last time\n tickPositions.push(t);\n // Handle higher ranks. Mark new days if the time is on midnight\n // (#950, #1649, #1760, #3349). Use a reasonable dropout threshold\n // to prevent looping over dense data grouping (#6156).\n if (interval <= timeUnits.hour && tickPositions.length < 10000) {\n tickPositions.forEach(function (t) {\n if (\n // Speed optimization, no need to run dateFormat unless\n // we're on a full or half hour\n t % 1800000 === 0 &&\n // Check for local or global midnight\n time.dateFormat('%H%M%S%L', t) === '000000000') {\n higherRanks[t] = 'day';\n }\n });\n }\n }\n // record information on the chosen unit - for dynamic label formatter\n tickPositions.info = extend(normalizedInterval, {\n higherRanks,\n totalRange: interval * count\n });\n return tickPositions;\n }\n /**\n * Get the optimal date format for a point, based on a range.\n *\n * @private\n * @function Highcharts.Time#getDateFormat\n *\n * @param {number} range\n * The time range\n *\n * @param {number} timestamp\n * The timestamp of the date\n *\n * @param {number} startOfWeek\n * An integer representing the first day of the week, where 0 is\n * Sunday.\n *\n * @param {Highcharts.Dictionary} dateTimeLabelFormats\n * A map of time units to formats.\n *\n * @return {string}\n * The optimal date format for a point.\n */\n getDateFormat(range, timestamp, startOfWeek, dateTimeLabelFormats) {\n const dateStr = this.dateFormat('%m-%d %H:%M:%S.%L', timestamp), blank = '01-01 00:00:00.000', strpos = {\n millisecond: 15,\n second: 12,\n minute: 9,\n hour: 6,\n day: 3\n };\n let n = 'millisecond', \n // for sub-millisecond data, #4223\n lastN = n;\n for (n in timeUnits) { // eslint-disable-line guard-for-in\n // If the range is exactly one week and we're looking at a\n // Sunday/Monday, go for the week format\n if (range === timeUnits.week &&\n +this.dateFormat('%w', timestamp) === startOfWeek &&\n dateStr.substr(6) === blank.substr(6)) {\n n = 'week';\n break;\n }\n // The first format that is too great for the range\n if (timeUnits[n] > range) {\n n = lastN;\n break;\n }\n // If the point is placed every day at 23:59, we need to show\n // the minutes as well. #2637.\n if (strpos[n] &&\n dateStr.substr(strpos[n]) !== blank.substr(strpos[n])) {\n break;\n }\n // Weeks are outside the hierarchy, only apply them on\n // Mondays/Sundays like in the first condition\n if (n !== 'week') {\n lastN = n;\n }\n }\n return this.resolveDTLFormat(dateTimeLabelFormats[n]).main;\n }\n }\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Normalized interval.\n *\n * @interface Highcharts.TimeNormalizedObject\n */ /**\n * The count.\n *\n * @name Highcharts.TimeNormalizedObject#count\n * @type {number|undefined}\n */ /**\n * The interval in axis values (ms).\n *\n * @name Highcharts.TimeNormalizedObject#unitRange\n * @type {number}\n */\n /**\n * Function of an additional date format specifier.\n *\n * @callback Highcharts.TimeFormatCallbackFunction\n *\n * @param {number} timestamp\n * The time to format.\n *\n * @return {string}\n * The formatted portion of the date.\n */\n /**\n * Time ticks.\n *\n * @interface Highcharts.AxisTickPositionsArray\n * @extends global.Array\n */ /**\n * @name Highcharts.AxisTickPositionsArray#info\n * @type {Highcharts.TimeTicksInfoObject|undefined}\n */\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @callback Highcharts.TimezoneOffsetCallbackFunction\n *\n * @param {number} timestamp\n * Timestamp in terms of milliseconds since January 1 1970.\n *\n * @return {number}\n * Timezone offset in minutes.\n */\n /**\n * Allows to manually load the `moment.js` library from Highcharts options\n * instead of the `window`.\n * In case of loading the library from a `script` tag,\n * this option is not needed, it will be loaded from there by default.\n *\n * @type {Function}\n * @since 8.2.0\n * @apioption time.moment\n */\n ''; // keeps doclets above in JS file\n\n return Time;\n });\n _registerModule(_modules, 'Core/Defaults.js', [_modules['Core/Chart/ChartDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Color/Palettes.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js']], function (ChartDefaults, Color, H, Palettes, Time, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { parse: color } = Color;\n const { isTouchDevice, svg } = H;\n const { merge } = U;\n /* *\n *\n * API Options\n *\n * */\n /**\n * Global default settings.\n *\n * @name Highcharts.defaultOptions\n * @type {Highcharts.Options}\n */ /**\n * @optionparent\n * @private\n */\n const defaultOptions = {\n /**\n * An array containing the default colors for the chart's series. When\n * all colors are used, new colors are pulled from the start again.\n *\n * Default colors can also be set on a series or series.type basis,\n * see [column.colors](#plotOptions.column.colors),\n * [pie.colors](#plotOptions.pie.colors).\n *\n * In styled mode, the colors option doesn't exist. Instead, colors\n * are defined in CSS and applied either through series or point class\n * names, or through the [chart.colorCount](#chart.colorCount) option.\n *\n * @sample {highcharts} highcharts/chart/colors/\n * Assign a global color theme\n * @sample highcharts/members/theme-v10/\n * Latest release styled like version 10\n *\n * @type {Array<(Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject)>}\n * @default [\n * \"#2caffe\",\n * \"#544fc5\",\n * \"#00e272\",\n * \"#fe6a35\",\n * \"#6b8abc\",\n * \"#d568fb\",\n * \"#2ee0ca\",\n * \"#fa4b42\",\n * \"#feb56a\",\n * \"#91e8e12\n * ]\n */\n colors: Palettes.colors,\n /**\n * Styled mode only. Configuration object for adding SVG definitions for\n * reusable elements. See [gradients, shadows and\n * patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns)\n * for more information and code examples.\n *\n * @type {*}\n * @since 5.0.0\n * @apioption defs\n */\n /**\n * @ignore-option\n */\n symbols: ['circle', 'diamond', 'square', 'triangle', 'triangle-down'],\n /**\n * The language object is global and it can't be set on each chart\n * initialization. Instead, use `Highcharts.setOptions` to set it before any\n * chart is initialized.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * months: [\n * 'Janvier', 'Février', 'Mars', 'Avril',\n * 'Mai', 'Juin', 'Juillet', 'Août',\n * 'Septembre', 'Octobre', 'Novembre', 'Décembre'\n * ],\n * weekdays: [\n * 'Dimanche', 'Lundi', 'Mardi', 'Mercredi',\n * 'Jeudi', 'Vendredi', 'Samedi'\n * ]\n * }\n * });\n * ```\n */\n lang: {\n /**\n * The loading text that appears when the chart is set into the loading\n * state following a call to `chart.showLoading`.\n */\n loading: 'Loading...',\n /**\n * An array containing the months names. Corresponds to the `%B` format\n * in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n * \"July\", \"August\", \"September\", \"October\", \"November\",\n * \"December\"]\n */\n months: [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July',\n 'August', 'September', 'October', 'November', 'December'\n ],\n /**\n * An array containing the months names in abbreviated form. Corresponds\n * to the `%b` format in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n * \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n */\n shortMonths: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',\n 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ],\n /**\n * An array containing the weekday names.\n *\n * @type {Array}\n * @default [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\",\n * \"Friday\", \"Saturday\"]\n */\n weekdays: [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday',\n 'Thursday', 'Friday', 'Saturday'\n ],\n /**\n * Short week days, starting Sunday. If not specified, Highcharts uses\n * the first three letters of the `lang.weekdays` option.\n *\n * @sample highcharts/lang/shortweekdays/\n * Finnish two-letter abbreviations\n *\n * @type {Array}\n * @since 4.2.4\n * @apioption lang.shortWeekdays\n */\n /**\n * What to show in a date field for invalid dates. Defaults to an empty\n * string.\n *\n * @type {string}\n * @since 4.1.8\n * @product highcharts highstock\n * @apioption lang.invalidDate\n */\n /**\n * The title appearing on hovering the zoom in button. The text itself\n * defaults to \"+\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom in\n * @product highmaps\n * @apioption lang.zoomIn\n */\n /**\n * The title appearing on hovering the zoom out button. The text itself\n * defaults to \"-\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom out\n * @product highmaps\n * @apioption lang.zoomOut\n */\n /**\n * The default decimal point used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments.\n *\n * @since 1.2.2\n */\n decimalPoint: '.',\n /**\n * [Metric prefixes](https://en.wikipedia.org/wiki/Metric_prefix) used\n * to shorten high numbers in axis labels. Replacing any of the\n * positions with `null` causes the full number to be written. Setting\n * `numericSymbols` to `null` disables shortening altogether.\n *\n * @sample {highcharts} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n * @sample {highstock} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n *\n * @type {Array}\n * @default [\"k\", \"M\", \"G\", \"T\", \"P\", \"E\"]\n * @since 2.3.0\n */\n numericSymbols: ['k', 'M', 'G', 'T', 'P', 'E'],\n /**\n * The magnitude of [numericSymbols](#lang.numericSymbol) replacements.\n * Use 10000 for Japanese, Korean and various Chinese locales, which\n * use symbols for 10^4, 10^8 and 10^12.\n *\n * @sample highcharts/lang/numericsymbolmagnitude/\n * 10000 magnitude for Japanese\n *\n * @type {number}\n * @default 1000\n * @since 5.0.3\n * @apioption lang.numericSymbolMagnitude\n */\n /**\n * The text for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoom: 'Reset zoom',\n /**\n * The tooltip title for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoomTitle: 'Reset zoom level 1:1',\n /**\n * The default thousands separator used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments. Defaults\n * to a single space character, which is recommended in\n * [ISO 31-0](https://en.wikipedia.org/wiki/ISO_31-0#Numbers) and works\n * across Anglo-American and continental European languages.\n *\n * @default \\u0020\n * @since 1.2.2\n */\n thousandsSep: ' '\n },\n /**\n * Global options that don't apply to each chart. These options, like\n * the `lang` options, must be set using the `Highcharts.setOptions`\n * method.\n *\n * ```js\n * Highcharts.setOptions({\n * global: {\n * useUTC: false\n * }\n * });\n * ```\n */\n /**\n * _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\\.\n * Use the [libURL](#exporting.libURL) option to configure exporting._\n *\n * The URL to the additional file to lazy load for Android 2.x devices.\n * These devices don't support SVG, so we download a helper file that\n * contains [canvg](https://github.com/canvg/canvg), its dependency\n * rbcolor, and our own CanVG Renderer class. To avoid hotlinking to\n * our site, you can install canvas-tools.js on your own server and\n * change this option accordingly.\n *\n * @deprecated\n *\n * @type {string}\n * @default https://code.highcharts.com/{version}/modules/canvas-tools.js\n * @product highcharts highmaps\n * @apioption global.canvasToolsURL\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.useUTC](#time.useUTC) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {boolean}\n * @apioption global.useUTC\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.Date](#time.Date) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.Date\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.getTimezoneOffset](#time.getTimezoneOffset) that supports\n * individual time settings per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.getTimezoneOffset\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezone](#time.timezone) that supports individual time\n * settings per chart.\n *\n * @deprecated\n *\n * @type {string}\n * @product highcharts highstock\n * @apioption global.timezone\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezoneOffset](#time.timezoneOffset) that supports individual\n * time settings per chart.\n *\n * @deprecated\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption global.timezoneOffset\n */\n global: {},\n /**\n * Time options that can apply globally or to individual charts. These\n * settings affect how `datetime` axes are laid out, how tooltips are\n * formatted, how series\n * [pointIntervalUnit](#plotOptions.series.pointIntervalUnit) works and how\n * the Highcharts Stock range selector handles time.\n *\n * The common use case is that all charts in the same Highcharts object\n * share the same time settings, in which case the global settings are set\n * using `setOptions`.\n *\n * ```js\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n * ```\n *\n * Since v6.0.5, the time options were moved from the `global` obect to the\n * `time` object, and time options can be set on each individual chart.\n *\n * @sample {highcharts|highstock}\n * highcharts/time/timezone/\n * Set the timezone globally\n * @sample {highcharts}\n * highcharts/time/individual/\n * Set the timezone per chart instance\n * @sample {highstock}\n * stock/time/individual/\n * Set the timezone per chart instance\n *\n * @since 6.0.5\n * @optionparent time\n */\n time: {\n /**\n * A custom `Date` class for advanced date handling. For example,\n * [JDate](https://github.com/tahajahangir/jdate) can be hooked in to\n * handle Jalali dates.\n *\n * @type {*}\n * @since 4.0.4\n * @product highcharts highstock gantt\n */\n Date: void 0,\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @see [global.timezoneOffset](#global.timezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/gettimezoneoffset/\n * Use moment.js to draw Oslo time regardless of browser locale\n *\n * @type {Highcharts.TimezoneOffsetCallbackFunction}\n * @since 4.1.0\n * @product highcharts highstock gantt\n */\n getTimezoneOffset: void 0,\n /**\n * Requires [moment.js](https://momentjs.com/). If the timezone option\n * is specified, it creates a default\n * [getTimezoneOffset](#time.getTimezoneOffset) function that looks\n * up the specified timezone in moment.js. If moment.js is not included,\n * this throws a Highcharts error in the console, but does not crash the\n * chart.\n *\n * @see [getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezone/\n * Europe/Oslo\n *\n * @type {string}\n * @since 5.0.7\n * @product highcharts highstock gantt\n */\n timezone: void 0,\n /**\n * The timezone offset in minutes. Positive values are west, negative\n * values are east of UTC, as in the ECMAScript\n * [getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)\n * method. Use this to display UTC based data in a predefined time zone.\n *\n * @see [time.getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezoneoffset/\n * Timezone offset\n *\n * @since 3.0.8\n * @product highcharts highstock gantt\n */\n timezoneOffset: 0,\n /**\n * Whether to use UTC time for axis scaling, tickmark placement and\n * time display in `Highcharts.dateFormat`. Advantages of using UTC\n * is that the time displays equally regardless of the user agent's\n * time zone settings. Local time can be used when the data is loaded\n * in real time or when correct Daylight Saving Time transitions are\n * required.\n *\n * @sample {highcharts} highcharts/time/useutc-true/\n * True by default\n * @sample {highcharts} highcharts/time/useutc-false/\n * False\n */\n useUTC: true\n },\n chart: ChartDefaults,\n /**\n * The chart's main title.\n *\n * @sample {highmaps} maps/title/title/\n * Title options demonstrated\n */\n title: {\n /**\n * When the title is floating, the plot area will not move to make space\n * for it.\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * False by default\n * @sample {highcharts} highcharts/title/floating/\n * True - title on top of the plot area\n * @sample {highstock} stock/chart/title-floating/\n * True - title on top of the plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption title.floating\n */\n /**\n * CSS styles for the title. Use this for font styling, but use `align`,\n * `x` and `y` for text alignment.\n *\n * In styled mode, the title style is given in the `.highcharts-title`\n * class.\n *\n * @sample {highcharts} highcharts/title/style/\n * Custom color and weight\n * @sample {highstock} stock/chart/title-style/\n * Custom color and weight\n * @sample highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {highcharts|highmaps} { \"color\": \"#333333\", \"fontSize\": \"1.125em\" }\n * @default {highstock} { \"color\": \"#333333\", \"fontSize\": \"1em\" }\n * @apioption title.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption title.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When a value is given, the title behaves\n * as if [floating](#title.floating) were `true`.\n *\n * @sample {highcharts} highcharts/title/verticalalign/\n * Chart title in bottom right corner\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption title.verticalAlign\n */\n /**\n * The x position of the title relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption title.x\n */\n /**\n * The y position of the title relative to the alignment within\n * [chart.spacingTop](#chart.spacingTop) and [chart.spacingBottom](\n * #chart.spacingBottom). By default it depends on the font size.\n *\n * @sample {highcharts} highcharts/title/y/\n * Title inside the plot area\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {number}\n * @since 2.0\n * @apioption title.y\n */\n /**\n * The title of the chart. To disable the title, set the `text` to\n * `undefined`.\n *\n * @sample {highcharts} highcharts/title/text/\n * Custom title\n * @sample {highstock} stock/chart/title-text/\n * Custom title\n *\n * @default {highcharts|highmaps} Chart title\n * @default {highstock} undefined\n */\n text: 'Chart title',\n /**\n * The horizontal alignment of the title. Can be one of \"left\", \"center\"\n * and \"right\".\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * The margin between the title and the plot area, or if a subtitle\n * is present, the margin between the subtitle and the plot area.\n *\n * @sample {highcharts} highcharts/title/margin-50/\n * A chart title margin of 50\n * @sample {highcharts} highcharts/title/margin-subtitle/\n * The same margin applied with a subtitle\n * @sample {highstock} stock/chart/title-margin/\n * A chart title margin of 50\n *\n * @since 2.1\n */\n margin: 15,\n /**\n * Adjustment made to the title width, normally to reserve space for\n * the exporting burger menu.\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's subtitle. This can be used both to display a subtitle below\n * the main title, and to display random text anywhere in the chart. The\n * subtitle can be updated after chart initialization through the\n * `Chart.setTitle` method.\n *\n * @sample {highmaps} maps/title/subtitle/\n * Subtitle options demonstrated\n */\n subtitle: {\n /**\n * When the subtitle is floating, the plot area will not move to make\n * space for it.\n *\n * @sample {highcharts} highcharts/subtitle/floating/\n * Floating title and subtitle\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote floating at bottom right of plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption subtitle.floating\n */\n /**\n * CSS styles for the title.\n *\n * In styled mode, the subtitle style is given in the\n * `.highcharts-subtitle` class.\n *\n * @sample {highcharts} highcharts/subtitle/style/\n * Custom color and weight\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n * @sample {highstock} stock/chart/subtitle-style\n * Custom color and weight\n * @sample {highstock} highcharts/css/titles/\n * Styled mode\n * @sample {highmaps} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption subtitle.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption subtitle.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the subtitle behaves as\n * floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption subtitle.verticalAlign\n */\n /**\n * The x position of the subtitle relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption subtitle.x\n */\n /**\n * The y position of the subtitle relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`. By default the subtitle\n * is laid out below the title unless the title is floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @since 2.0\n * @apioption subtitle.y\n */\n /**\n * The subtitle of the chart.\n *\n * @sample {highcharts|highstock} highcharts/subtitle/text/\n * Custom subtitle\n * @sample {highcharts|highstock} highcharts/subtitle/text-formatted/\n * Formatted and linked text.\n */\n text: '',\n /**\n * The horizontal alignment of the subtitle. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at bottom right of plot area\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * Adjustment made to the subtitle width, normally to reserve space\n * for the exporting burger menu.\n *\n * @see [title.widthAdjust](#title.widthAdjust)\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's caption, which will render below the chart and will be part\n * of exported charts. The caption can be updated after chart initialization\n * through the `Chart.update` or `Chart.caption.update` methods.\n *\n * @sample highcharts/caption/text/\n * A chart with a caption\n * @since 7.2.0\n */\n caption: {\n /**\n * When the caption is floating, the plot area will not move to make\n * space for it.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.floating\n */\n /**\n * The margin between the caption and the plot area.\n */\n margin: 15,\n /**\n * CSS styles for the caption.\n *\n * In styled mode, the caption style is given in the\n * `.highcharts-caption` class.\n *\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption caption.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.useHTML\n */\n /**\n * The x position of the caption relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @type {number}\n * @default 0\n * @apioption caption.x\n */\n /**\n * The y position of the caption relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`.\n *\n * @type {number}\n * @apioption caption.y\n */\n /**\n * The caption text of the chart.\n *\n * @sample {highcharts} highcharts/caption/text/\n * Custom caption\n */\n text: '',\n /**\n * The horizontal alignment of the caption. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'left',\n /**\n * The vertical alignment of the caption. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the caption behaves as\n * floating.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'bottom'\n },\n /**\n * The plotOptions is a wrapper object for config objects for each series\n * type. The config objects for each series can also be overridden for\n * each series item as given in the series array.\n *\n * Configuration options for the series are given in three levels. Options\n * for all series in a chart are given in the [plotOptions.series](\n * #plotOptions.series) object. Then options for all series of a specific\n * type are given in the plotOptions of that type, for example\n * `plotOptions.line`. Next, options for one single series are given in\n * [the series array](#series).\n */\n plotOptions: {},\n /**\n * The legend is a box containing a symbol and name for each series\n * item or point item in the chart. Each series (or points in case\n * of pie charts) is represented by a symbol and its name in the legend.\n *\n * It is possible to override the symbol creator function and create\n * [custom legend symbols](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/studies/legend-custom-symbol/).\n *\n * @productdesc {highmaps}\n * A Highmaps legend by default contains one legend item per series, but if\n * a `colorAxis` is defined, the axis will be displayed in the legend.\n * Either as a gradient, or as multiple legend items for `dataClasses`.\n */\n legend: {\n /**\n * The background color of the legend.\n *\n * @see In styled mode, the legend background fill can be applied with\n * the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/backgroundcolor/\n * Yellowish background\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption legend.backgroundColor\n */\n /**\n * The width of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke width can be applied\n * with the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/borderwidth/\n * 2px border width\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {number}\n * @default 0\n * @apioption legend.borderWidth\n */\n /**\n * Enable or disable the legend. There is also a series-specific option,\n * [showInLegend](#plotOptions.series.showInLegend), that can hide the\n * series from the legend. In some series types this is `false` by\n * default, so it must set to `true` in order to show the legend for the\n * series.\n *\n * @sample {highcharts} highcharts/legend/enabled-false/ Legend disabled\n * @sample {highstock} stock/legend/align/ Various legend options\n * @sample {highmaps} maps/legend/enabled-false/ Legend disabled\n *\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} false\n */\n enabled: true,\n /**\n * The horizontal alignment of the legend box within the chart area.\n * Valid values are `left`, `center` and `right`.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * @sample {highcharts} highcharts/legend/align/\n * Legend at the right of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * If the [layout](legend.layout) is `horizontal` and the legend items\n * span over two lines or more, whether to align the items into vertical\n * columns. Setting this to `false` makes room for more items, but will\n * look more messy.\n *\n * @since 6.1.0\n */\n alignColumns: true,\n /**\n * A CSS class name to apply to the legend group.\n */\n className: 'highcharts-no-tooltip',\n /**\n * When the legend is floating, the plot area ignores it and is allowed\n * to be placed below it.\n *\n * @sample {highcharts} highcharts/legend/floating-false/\n * False by default\n * @sample {highcharts} highcharts/legend/floating-true/\n * True\n * @sample {highmaps} maps/legend/alignment/\n * Floating legend\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption legend.floating\n */\n /**\n * The layout of the legend items. Can be one of `horizontal` or\n * `vertical` or `proximate`. When `proximate`, the legend items will be\n * placed as close as possible to the graphs they're representing,\n * except in inverted charts or when the legend position doesn't allow\n * it.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highcharts} highcharts/legend/layout-vertical/\n * Vertical\n * @sample highcharts/legend/layout-proximate\n * Labels proximate to the data\n * @sample {highstock} stock/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Vertical with data classes\n * @sample {highmaps} maps/legend/layout-vertical/\n * Vertical with color axis gradient\n *\n * @validvalue [\"horizontal\", \"vertical\", \"proximate\"]\n */\n layout: 'horizontal',\n /**\n * In a legend with horizontal layout, the itemDistance defines the\n * pixel distance between each item.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * 50px item distance\n * @sample {highstock} highcharts/legend/layout-horizontal/\n * 50px item distance\n *\n * @type {number}\n * @default {highcharts} 20\n * @default {highstock} 20\n * @default {highmaps} 8\n * @since 3.0.3\n * @apioption legend.itemDistance\n */\n /**\n * The pixel bottom margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @since 2.2.0\n */\n itemMarginBottom: 2,\n /**\n * The pixel top margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @since 2.2.0\n */\n itemMarginTop: 2,\n /**\n * The width for each legend item. By default the items are laid out\n * successively. In a [horizontal layout](legend.layout), if the items\n * are laid out across two rows or more, they will be vertically aligned\n * depending on the [legend.alignColumns](legend.alignColumns) option.\n *\n * @sample {highcharts} highcharts/legend/itemwidth-default/\n * Undefined by default\n * @sample {highcharts} highcharts/legend/itemwidth-80/\n * 80 for aligned legend items\n *\n * @type {number}\n * @since 2.0\n * @apioption legend.itemWidth\n */\n /**\n * A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for each legend label. Available variables relates to properties on\n * the series, or the point in case of pies.\n *\n * @type {string}\n * @default {name}\n * @since 1.3\n * @apioption legend.labelFormat\n */\n /* eslint-disable valid-jsdoc */\n /**\n * Callback function to format each of the series' labels. The `this`\n * keyword refers to the series object, or the point object in case of\n * pie charts. By default the series or point name is printed.\n *\n * @productdesc {highmaps}\n * In Highmaps the context can also be a data class in case of a\n * `colorAxis`.\n *\n * @sample {highcharts} highcharts/legend/labelformatter/\n * Add text\n * @sample {highmaps} maps/legend/labelformatter/\n * Data classes with label formatter\n *\n * @type {Highcharts.FormatterCallbackFunction}\n */\n labelFormatter: function () {\n /** eslint-enable valid-jsdoc */\n return this.name;\n },\n /**\n * Line height for the legend items. Deprecated as of 2.1\\. Instead,\n * the line height for each item can be set using\n * `itemStyle.lineHeight`, and the padding between items using\n * `itemMarginTop` and `itemMarginBottom`.\n *\n * @sample {highcharts} highcharts/legend/lineheight/\n * Setting padding\n *\n * @deprecated\n *\n * @type {number}\n * @default 16\n * @since 2.0\n * @product highcharts gantt\n * @apioption legend.lineHeight\n */\n /**\n * If the plot area sized is calculated automatically and the legend is\n * not floating, the legend margin is the space between the legend and\n * the axis labels or plot area.\n *\n * @sample {highcharts} highcharts/legend/margin-default/\n * 12 pixels by default\n * @sample {highcharts} highcharts/legend/margin-30/\n * 30 pixels\n *\n * @type {number}\n * @default 12\n * @since 2.1\n * @apioption legend.margin\n */\n /**\n * Maximum pixel height for the legend. When the maximum height is\n * extended, navigation will show.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption legend.maxHeight\n */\n /**\n * The color of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke can be applied with the\n * `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/bordercolor/\n * Brown border\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The border corner radius of the legend.\n *\n * @sample {highcharts} highcharts/legend/borderradius-default/\n * Square by default\n * @sample {highcharts} highcharts/legend/borderradius-round/\n * 5px rounded\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n */\n borderRadius: 0,\n /**\n * Options for the paging or navigation appearing when the legend is\n * overflown. Navigation works well on screen, but not in static\n * exported images. One way of working around that is to\n * [increase the chart height in\n * export](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/legend/navigation-enabled-false/).\n */\n navigation: {\n /**\n * How to animate the pages when navigating up or down. A value of\n * `true` applies the default navigation given in the\n * `chart.animation` option. Additional options can be given as an\n * object containing values for easing and duration.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {boolean|Partial}\n * @default true\n * @since 2.2.4\n * @apioption legend.navigation.animation\n */\n /**\n * The pixel size of the up and down arrows in the legend paging\n * navigation.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {number}\n * @default 12\n * @since 2.2.4\n * @apioption legend.navigation.arrowSize\n */\n /**\n * Whether to enable the legend navigation. In most cases, disabling\n * the navigation results in an unwanted overflow.\n *\n * See also the\n * [adapt chart to legend](https://github.com/highcharts/adapt-chart-to-legend)\n * plugin for a solution to extend the chart height to make room for\n * the legend, optionally in exported charts only.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.4\n * @apioption legend.navigation.enabled\n */\n /**\n * Text styles for the legend page navigation.\n *\n * @see In styled mode, the navigation items are styled with the\n * `.highcharts-legend-navigation` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.CSSObject}\n * @since 2.2.4\n * @apioption legend.navigation.style\n */\n style: {\n fontSize: '0.8em'\n },\n /**\n * The color for the active up or down arrow in the legend page\n * navigation.\n *\n * @see In styled mode, the active arrow be styled with the\n * `.highcharts-legend-nav-active` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n activeColor: \"#0022ff\" /* Palette.highlightColor100 */,\n /**\n * The color of the inactive up or down arrow in the legend page\n * navigation. .\n *\n * @see In styled mode, the inactive arrow be styled with the\n * `.highcharts-legend-nav-inactive` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n inactiveColor: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * The inner padding of the legend box.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 8\n * @since 2.2.0\n * @apioption legend.padding\n */\n /**\n * Whether to reverse the order of the legend items compared to the\n * order of the series or points as defined in the configuration object.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks),\n * [series.legendIndex](#series.legendIndex)\n *\n * @sample {highcharts} highcharts/legend/reversed/\n * Stacked bar with reversed legend\n *\n * @type {boolean}\n * @default false\n * @since 1.2.5\n * @apioption legend.reversed\n */\n /**\n * Whether to show the symbol on the right side of the text rather than\n * the left side. This is common in Arabic and Hebrew.\n *\n * @sample {highcharts} highcharts/legend/rtl/\n * Symbol to the right\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption legend.rtl\n */\n /**\n * CSS styles for the legend area. In the 1.x versions the position\n * of the legend area was determined by CSS. In 2.x, the position is\n * determined by properties like `align`, `verticalAlign`, `x` and `y`,\n * but the styles are still parsed for backwards compatibility.\n *\n * @deprecated\n *\n * @type {Highcharts.CSSObject}\n * @product highcharts highstock\n * @apioption legend.style\n */\n /**\n * CSS styles for each legend item. Only a subset of CSS is supported,\n * notably those options related to text. The default `textOverflow`\n * property makes long texts truncate. Set it to `undefined` to wrap\n * text instead. A `width` property can be added to control the text\n * width.\n *\n * @see In styled mode, the legend items can be styled with the\n * `.highcharts-legend-item` class.\n *\n * @sample {highcharts} highcharts/legend/itemstyle/\n * Bold black text\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"cursor\": \"pointer\", \"fontSize\": \"0.75em\", \"fontWeight\": \"bold\", \"textOverflow\": \"ellipsis\"}\n */\n itemStyle: {\n /**\n * @ignore\n */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * @ignore\n */\n cursor: 'pointer',\n /**\n * @ignore\n */\n fontSize: '0.8em',\n /**\n * @ignore\n */\n textDecoration: 'none',\n /**\n * @ignore\n */\n textOverflow: 'ellipsis'\n },\n /**\n * CSS styles for each legend item in hover mode. Only a subset of\n * CSS is supported, notably those options related to text. Properties\n * are inherited from `style` unless overridden here.\n *\n * @see In styled mode, the hovered legend items can be styled with\n * the `.highcharts-legend-item:hover` pesudo-class.\n *\n * @sample {highcharts} highcharts/legend/itemhoverstyle/\n * Red on hover\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#000000\"}\n */\n itemHoverStyle: {\n /**\n * @ignore\n */\n color: \"#000000\" /* Palette.neutralColor100 */\n },\n /**\n * CSS styles for each legend item when the corresponding series or\n * point is hidden. Only a subset of CSS is supported, notably those\n * options related to text. Properties are inherited from `style`\n * unless overridden here.\n *\n * @see In styled mode, the hidden legend items can be styled with\n * the `.highcharts-legend-item-hidden` class.\n *\n * @sample {highcharts} highcharts/legend/itemhiddenstyle/\n * Darker gray color\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#cccccc\"}\n */\n itemHiddenStyle: {\n /**\n * @ignore\n */\n color: \"#666666\" /* Palette.neutralColor60 */,\n /**\n * @ignore\n */\n textDecoration: 'line-through'\n },\n /**\n * Whether to apply a drop shadow to the legend. A `backgroundColor`\n * also needs to be applied for this to take effect. The shadow can be\n * an object configuration containing `color`, `offsetX`, `offsetY`,\n * `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/legend/shadow/\n * White background and drop shadow\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {boolean|Highcharts.CSSObject}\n */\n shadow: false,\n /**\n * Default styling for the checkbox next to a legend item when\n * `showCheckbox` is true.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"width\": \"13px\", \"height\": \"13px\", \"position\":\"absolute\"}\n */\n itemCheckboxStyle: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n width: '13px',\n /**\n * @ignore\n */\n height: '13px'\n },\n // itemWidth: undefined,\n /**\n * When this is true, the legend symbol width will be the same as\n * the symbol height, which in turn defaults to the font size of the\n * legend items.\n *\n * @since 5.0.0\n */\n squareSymbol: true,\n /**\n * The pixel height of the symbol for series types that use a rectangle\n * in the legend. Defaults to the font size of legend items.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a vertical color\n * axis, the height defaults to 200.\n *\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * No distance between data classes\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolHeight\n */\n /**\n * The border radius of the symbol for series types that use a rectangle\n * in the legend. Defaults to half the `symbolHeight`, effectively\n * creating a circle.\n *\n * For color axis scales, it defaults to 3.\n *\n * @sample {highcharts} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highstock} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highmaps} highcharts/legend/symbolradius/\n * Round symbols\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolRadius\n */\n /**\n * The pixel width of the legend item symbol. When the `squareSymbol`\n * option is set, this defaults to the `symbolHeight`, otherwise 16.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a horizontal color\n * axis, the width defaults to 200.\n *\n * @sample {highcharts} highcharts/legend/symbolwidth/\n * Greater symbol width and padding\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n *\n * @type {number}\n * @apioption legend.symbolWidth\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the legend item texts.\n *\n * Prior to 4.1.7, when using HTML, [legend.navigation](\n * #legend.navigation) was disabled.\n *\n * @type {boolean}\n * @default false\n * @apioption legend.useHTML\n */\n /**\n * For a color axis with data classes, how many decimals to render in\n * the legend. The default preserves the decimals of the range numbers.\n *\n * @type {number}\n * @default -1\n * @product highcharts highmaps\n * @apioption legend.valueDecimals\n */\n /**\n * For a color axis with data classes, a suffix for the range numbers in\n * the legend.\n *\n * @type {string}\n * @default ''\n * @product highcharts highmaps\n * @apioption legend.valueSuffix\n */\n /**\n * The width of the legend box. If a number is set, it translates to\n * pixels. Since v7.0.2 it allows setting a percent string of the full\n * chart width, for example `40%`.\n *\n * Defaults to the full chart width for legends below or above the\n * chart, half the chart width for legends to the left and right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n * @sample {highcharts} highcharts/legend/width-percent/\n * A percent of the chart width\n *\n * @type {number|string}\n * @since 2.0\n * @apioption legend.width\n */\n /**\n * The pixel padding between the legend item symbol and the legend\n * item text.\n *\n * @sample {highcharts} highcharts/legend/symbolpadding/\n * Greater symbol width and padding\n */\n symbolPadding: 5,\n /**\n * The vertical alignment of the legend box. Can be one of `top`,\n * `middle` or `bottom`. Vertical position can be further determined\n * by the `y` option.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * When the [layout](#legend.layout) option is `proximate`, the\n * `verticalAlign` option doesn't apply.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.0\n */\n verticalAlign: 'bottom',\n // width: undefined,\n /**\n * The x offset of the legend relative to its horizontal alignment\n * `align` within chart.spacingLeft and chart.spacingRight. Negative\n * x moves it to the left, positive x moves it to the right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n *\n * @since 2.0\n */\n x: 0,\n /**\n * The vertical offset of the legend relative to it's vertical alignment\n * `verticalAlign` within chart.spacingTop and chart.spacingBottom.\n * Negative y moves it up, positive y moves it down.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @since 2.0\n */\n y: 0,\n /**\n * A title to be added on top of the legend.\n *\n * @sample {highcharts} highcharts/legend/title/\n * Legend title\n * @sample {highmaps} maps/legend/alignment/\n * Legend with title\n *\n * @since 3.0\n */\n title: {\n /**\n * A text or HTML string for the title.\n *\n * @type {string}\n * @since 3.0\n * @apioption legend.title.text\n */\n /**\n * Generic CSS styles for the legend title.\n *\n * @see In styled mode, the legend title is styled with the\n * `.highcharts-legend-title` class.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontSize\": \"0.75em\", \"fontWeight\": \"bold\"}\n * @since 3.0\n */\n style: {\n /**\n * @ignore\n */\n fontSize: '0.8em',\n /**\n * @ignore\n */\n fontWeight: 'bold'\n }\n }\n },\n /**\n * The loading options control the appearance of the loading screen\n * that covers the plot area on chart operations. This screen only\n * appears after an explicit call to `chart.showLoading()`. It is a\n * utility for developers to communicate to the end user that something\n * is going on, for example while retrieving new data via an XHR connection.\n * The \"Loading...\" text itself is not part of this configuration\n * object, but part of the `lang` object.\n */\n loading: {\n /**\n * The duration in milliseconds of the fade out effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.hideDuration\n */\n /**\n * The duration in milliseconds of the fade in effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.showDuration\n */\n /**\n * CSS styles for the loading label `span`.\n *\n * @see In styled mode, the loading label is styled with the\n * `.highcharts-loading-inner` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/labelstyle/\n * Vertically centered\n * @sample {highstock} stock/loading/general/\n * Label styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\", \"position\": \"relative\", \"top\": \"45%\"}\n * @since 1.2.0\n */\n labelStyle: {\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n position: 'relative',\n /**\n * @ignore\n */\n top: '45%'\n },\n /**\n * CSS styles for the loading screen that covers the plot area.\n *\n * In styled mode, the loading label is styled with the\n * `.highcharts-loading` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/style/\n * Gray plot area, white text\n * @sample {highstock} stock/loading/general/\n * Gray plot area, white text\n *\n * @type {Highcharts.CSSObject}\n * @default {\"position\": \"absolute\", \"backgroundColor\": \"#ffffff\", \"opacity\": 0.5, \"textAlign\": \"center\"}\n * @since 1.2.0\n */\n style: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * @ignore\n */\n opacity: 0.5,\n /**\n * @ignore\n */\n textAlign: 'center'\n }\n },\n /**\n * Options for the tooltip that appears when the user hovers over a\n * series or point.\n *\n * @declare Highcharts.TooltipOptions\n */\n tooltip: {\n /**\n * The color of the tooltip border. When `undefined`, the border takes\n * the color of the corresponding series or point.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * Follow series by default\n * @sample {highcharts} highcharts/tooltip/bordercolor-black/\n * Black border\n * @sample {highstock} stock/tooltip/general/\n * Styled tooltip\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption tooltip.borderColor\n */\n /**\n * A CSS class name to apply to the tooltip's container div,\n * allowing unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption tooltip.className\n */\n /**\n * Since 4.1, the crosshair definitions are moved to the Axis object\n * in order for a better separation from the tooltip. See\n * [xAxis.crosshair](#xAxis.crosshair).\n *\n * @sample {highcharts} highcharts/tooltip/crosshairs-x/\n * Enable a crosshair for the x value\n *\n * @deprecated\n *\n * @type {*}\n * @default true\n * @apioption tooltip.crosshairs\n */\n /**\n * Distance from point to tooltip in pixels.\n *\n * @type {number}\n * @default 16\n * @apioption tooltip.distance\n */\n /**\n * Whether the tooltip should follow the mouse as it moves across\n * columns, pie slices and other point types with an extent.\n * By default it behaves this way for pie, polygon, map, sankey\n * and wordcloud series by override in the `plotOptions`\n * for those series types.\n *\n * Does not apply if [split](#tooltip.split) is `true`.\n *\n * For touch moves to behave the same way, [followTouchMove](\n * #tooltip.followTouchMove) must be `true` also.\n *\n * @sample highcharts/tooltip/followpointer/\n * Tooltip follow pointer comparison\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @since 3.0\n * @apioption tooltip.followPointer\n */\n /**\n * Whether the tooltip should update as the finger moves on a touch\n * device. If this is `true` and [chart.panning](#chart.panning) is\n * set,`followTouchMove` will take over one-finger touches, so the user\n * needs to use two fingers for zooming and panning.\n *\n * Note the difference to [followPointer](#tooltip.followPointer) that\n * only defines the _position_ of the tooltip. If `followPointer` is\n * false in for example a column series, the tooltip will show above or\n * below the column, but as `followTouchMove` is true, the tooltip will\n * jump from column to column as the user swipes across the plot area.\n *\n * @type {boolean}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 3.0.1\n * @apioption tooltip.followTouchMove\n */\n /**\n * Callback function to format the text of the tooltip from scratch. In\n * case of single or [shared](#tooltip.shared) tooltips, a string should\n * be returned. In case of [split](#tooltip.split) tooltips, it should\n * return an array where the first item is the header, and subsequent\n * items are mapped to the points. Return `false` to disable tooltip for\n * a specific point on series.\n *\n * A subset of HTML is supported. Unless `useHTML` is true, the HTML of\n * the tooltip is parsed and converted to SVG, therefore this isn't a\n * complete HTML renderer. The following HTML tags are supported: `b`,\n * `br`, `em`, `i`, `span`, `strong`. Spans can be styled with a `style`\n * attribute, but only text-related CSS, that is shared with SVG, is\n * handled.\n *\n * The available data in the formatter differ a bit depending on whether\n * the tooltip is shared or split, or belongs to a single point. In a\n * shared/split tooltip, all properties except `x`, which is common for\n * all points, are kept in an array, `this.points`.\n *\n * Available data are:\n *\n * - **this.percentage (not shared) /**\n * **this.points[i].percentage (shared)**:\n * Stacked series and pies only. The point's percentage of the total.\n *\n * - **this.point (not shared) / this.points[i].point (shared)**:\n * The point object. The point name, if defined, is available through\n * `this.point.name`.\n *\n * - **this.points**:\n * In a shared tooltip, this is an array containing all other\n * properties for each point.\n *\n * - **this.series (not shared) / this.points[i].series (shared)**:\n * The series object. The series name is available through\n * `this.series.name`.\n *\n * - **this.total (not shared) / this.points[i].total (shared)**:\n * Stacked series only. The total value at this point's x value.\n *\n * - **this.x**:\n * The x value. This property is the same regardless of the tooltip\n * being shared or not.\n *\n * - **this.y (not shared) / this.points[i].y (shared)**:\n * The y value.\n *\n * @sample {highcharts} highcharts/tooltip/formatter-simple/\n * Simple string formatting\n * @sample {highcharts} highcharts/tooltip/formatter-shared/\n * Formatting with shared tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Formatting with split tooltip\n * @sample highcharts/tooltip/formatter-conditional-default/\n * Extending default formatter\n * @sample {highstock} stock/tooltip/formatter/\n * Formatting with shared tooltip\n * @sample {highmaps} maps/tooltip/formatter/\n * String formatting\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.formatter\n */\n /**\n * Callback function to format the text of the tooltip for\n * visible null points.\n * Works analogously to [formatter](#tooltip.formatter).\n *\n * @sample highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.nullFormatter\n */\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (`false`), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area. For small charts, this may result in clipping\n * or overlapping. When `true`, a separate SVG element is created and\n * overlaid on the page, allowing the tooltip to be aligned inside the\n * page itself.\n *\n * Defaults to `true` if `chart.scrollablePlotArea` is activated,\n * otherwise `false`.\n *\n * @sample highcharts/tooltip/outside\n * Small charts with tooltips outside\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 6.1.1\n * @apioption tooltip.outside\n */\n /**\n * A callback function for formatting the HTML output for a single point\n * in the tooltip. Like the `pointFormat` string, but with more\n * flexibility.\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Point\n * @apioption tooltip.pointFormatter\n */\n /**\n * A callback function to place the tooltip in a custom position. The\n * callback receives three parameters: `labelWidth`, `labelHeight` and\n * `point`, where point contains values for `plotX` and `plotY` telling\n * where the reference point is in the plot area. Add `chart.plotLeft`\n * and `chart.plotTop` to get the full coordinates.\n *\n * To find the actual hovered `Point` instance, use\n * `this.chart.hoverPoint`. For shared or split tooltips, all the hover\n * points are available in `this.chart.hoverPoints`.\n *\n * Since v7, when [tooltip.split](#tooltip.split) option is enabled,\n * positioner is called for each of the boxes separately, including\n * xAxis header. xAxis header is not a point, instead `point` argument\n * contains info: `{ plotX: Number, plotY: Number, isHeader: Boolean }`\n *\n * The return should be an object containing x and y values, for example\n * `{ x: 100, y: 100 }`.\n *\n * @sample {highcharts} highcharts/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/positioner/\n * A fixed tooltip position on top of the chart\n * @sample {highmaps} maps/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/split-positioner/\n * Split tooltip with fixed positions\n * @sample {highstock} stock/tooltip/positioner-scrollable-plotarea/\n * Scrollable plot area combined with tooltip positioner\n *\n * @type {Highcharts.TooltipPositionerCallbackFunction}\n * @since 2.2.4\n * @apioption tooltip.positioner\n */\n /**\n * Split the tooltip into one label per series, with the header close\n * to the axis. This is recommended over [shared](#tooltip.shared)\n * tooltips for charts with multiple line series, generally making them\n * easier to read. This option takes precedence over `tooltip.shared`.\n *\n * Not supported for [polar](#chart.polar) and [inverted](#chart.inverted) charts.\n *\n * @productdesc {highstock} In Highcharts Stock, tooltips are split\n * by default since v6.0.0. Stock charts typically contain\n * multi-dimension points and multiple panes, making split tooltips\n * the preferred layout over\n * the previous `shared` tooltip.\n *\n * @sample highcharts/tooltip/split/\n * Split tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Split tooltip and custom formatter callback\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} true\n * @since 5.0.0\n * @product highcharts highstock\n * @apioption tooltip.split\n */\n /**\n * Prevents the tooltip from switching or closing, when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @type {boolean}\n * @since 8.0.1\n * @apioption tooltip.stickOnContact\n */\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption tooltip.useHTML\n */\n /**\n * How many decimals to show in each series' y value. This is\n * overridable in each series' tooltip options object. The default is to\n * preserve all decimals.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {number|undefined}\n * @since 2.2\n * @apioption tooltip.valueDecimals\n */\n /**\n * A string to prepend to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valuePrefix\n */\n /**\n * A string to append to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valueSuffix\n */\n /**\n * The format for the date in the tooltip header if the X axis is a\n * datetime axis. The default is a best guess based on the smallest\n * distance between points in the chart.\n *\n * @sample {highcharts} highcharts/tooltip/xdateformat/\n * A different format\n *\n * @type {string}\n * @product highcharts highstock gantt\n * @apioption tooltip.xDateFormat\n */\n /**\n * How many decimals to show for the `point.change`\n * or the `point.cumulativeSum` value when the `series.compare`\n * or the `series.cumulative` option is set.\n * This is overridable in each series' tooltip options object.\n *\n * @type {number}\n * @default 2\n * @since 1.0.1\n * @product highstock\n * @apioption tooltip.changeDecimals\n */\n /**\n * Enable or disable the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/enabled/\n * Disabled\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Disable tooltip and show values on chart instead\n */\n enabled: true,\n /**\n * Enable or disable animation of the tooltip.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n */\n animation: svg,\n /**\n * The radius of the rounded border corners.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * Default border radius\n * @sample {highcharts} highcharts/tooltip/borderradius-0/\n * Square borders\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n */\n borderRadius: 3,\n /**\n * For series on datetime axes, the date format in the tooltip's\n * header will by default be guessed based on the closest data points.\n * This member gives the default string representations used for\n * each unit. For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * @see [xAxis.dateTimeLabelFormats](#xAxis.dateTimeLabelFormats)\n *\n * @type {Highcharts.Dictionary}\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /** @internal */\n millisecond: '%A, %e %b, %H:%M:%S.%L',\n /** @internal */\n second: '%A, %e %b, %H:%M:%S',\n /** @internal */\n minute: '%A, %e %b, %H:%M',\n /** @internal */\n hour: '%A, %e %b, %H:%M',\n /** @internal */\n day: '%A, %e %b %Y',\n /** @internal */\n week: 'Week from %A, %e %b %Y',\n /** @internal */\n month: '%B %Y',\n /** @internal */\n year: '%Y'\n },\n /**\n * A string to append to the tooltip format.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @since 2.2\n */\n footerFormat: '',\n /**\n * The name of a symbol to use for the border around the tooltip\n * header. Applies only when [tooltip.split](#tooltip.split) is\n * enabled.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @see [tooltip.shape](#tooltip.shape)\n *\n * @sample {highstock} stock/tooltip/split-positioner/\n * Different shapes for header and split boxes\n *\n * @type {Highcharts.TooltipShapeValue}\n * @validvalue [\"callout\", \"square\"]\n * @since 7.0\n */\n headerShape: 'callout',\n /**\n * The number of milliseconds to wait until the tooltip is hidden when\n * mouse out from a point or chart.\n *\n * @since 3.0\n */\n hideDelay: 500,\n /**\n * Padding inside the tooltip, in pixels.\n *\n * @since 5.0.0\n */\n padding: 8,\n /**\n * The name of a symbol to use for the border around the tooltip. Can\n * be one of: `\"callout\"`, `\"circle\"` or `\"rect\"`. When\n * [tooltip.split](#tooltip.split)\n * option is enabled, shape is applied to all boxes except header, which\n * is controlled by\n * [tooltip.headerShape](#tooltip.headerShape).\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @type {Highcharts.TooltipShapeValue}\n * @since 4.0\n */\n shape: 'callout',\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events. Tooltip texts for series types with ordered\n * data (not pie, scatter, flags etc) will be shown in a single bubble.\n * This is recommended for single series charts and for tablet/mobile\n * optimized charts.\n *\n * See also [tooltip.split](#tooltip.split), that is better suited for\n * charts with many series, especially line-type series. The\n * `tooltip.split` option takes precedence over `tooltip.shared`.\n *\n * @sample {highcharts} highcharts/tooltip/shared-false/\n * False by default\n * @sample {highcharts} highcharts/tooltip/shared-true/\n * True\n * @sample {highcharts} highcharts/tooltip/shared-x-crosshair/\n * True with x axis crosshair\n * @sample {highcharts} highcharts/tooltip/shared-true-mixed-types/\n * True with mixed series types\n *\n * @since 2.1\n * @product highcharts highstock\n */\n shared: false,\n /**\n * Proximity snap for graphs or single points. It defaults to 10 for\n * mouse-powered devices and 25 for touch devices.\n *\n * Note that in most cases the whole plot area captures the mouse\n * movement, and in these cases `tooltip.snap` doesn't make sense. This\n * applies when [stickyTracking](#plotOptions.series.stickyTracking)\n * is `true` (default) and when the tooltip is [shared](#tooltip.shared)\n * or [split](#tooltip.split).\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 10 px by default\n * @sample {highcharts} highcharts/tooltip/snap-50/\n * 50 px on graph\n *\n * @type {number}\n * @default 10/25\n * @since 1.2.0\n * @product highcharts highstock\n */\n snap: isTouchDevice ? 25 : 10,\n /**\n * The HTML of the tooltip header line. Variables are enclosed by\n * curly brackets. Available variables are `point.key`, `series.name`,\n * `series.color` and other members from the `point` and `series`\n * objects. The `point.key` variable contains the category name, x\n * value or datetime string depending on the type of axis. For datetime\n * axes, the `point.key` date format can be set using\n * `tooltip.xDateFormat`.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highstock} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @apioption tooltip.headerFormat\n */\n headerFormat: '{point.key}
',\n /**\n * The HTML of the null point's line in the tooltip. Works analogously\n * to [pointFormat](#tooltip.pointFormat).\n *\n * @sample {highcharts} highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {string}\n * @apioption tooltip.nullFormat\n */\n /**\n * The HTML of the point's line in the tooltip. Variables are enclosed\n * by curly brackets. Available variables are `point.x`, `point.y`,\n * `series.name` and `series.color` and other properties on the same\n * form. Furthermore, `point.y` can be extended by the\n * `tooltip.valuePrefix` and `tooltip.valueSuffix` variables. This can\n * also be overridden for each series, which makes it a good hook for\n * displaying units.\n *\n * In styled mode, the dot is colored by a class name rather\n * than the point color.\n *\n * @sample {highcharts} highcharts/tooltip/pointformat/\n * A different point format with value suffix\n * @sample {highcharts|highstock} highcharts/tooltip/pointformat-extra-information/\n * Show extra information about points in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.pointFormat\n */\n pointFormat: '\\u25CF {series.name}: {point.y}
',\n /**\n * The background color or gradient for the tooltip.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-solid/\n * Yellowish background\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-gradient/\n * Gradient\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The pixel width of the tooltip border. Defaults to 0 for single\n * tooltips and 1 for split tooltips.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 2 pixels\n * @sample {highcharts} highcharts/tooltip/borderwidth/\n * No border (shadow only)\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n */\n borderWidth: void 0,\n /**\n * Whether to apply a drop shadow to the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * True by default\n * @sample {highcharts} highcharts/tooltip/shadow/\n * False\n * @sample {highmaps} maps/tooltip/positioner/\n * Fixed tooltip position, border and shadow disabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n */\n shadow: true,\n /**\n * Prevents the tooltip from switching or closing when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @since 8.0.1\n */\n stickOnContact: false,\n /**\n * CSS styles for the tooltip. The tooltip can also be styled through\n * the CSS class `.highcharts-tooltip`.\n *\n * Note that the default `pointerEvents` style makes the tooltip ignore\n * mouse events, so in order to use clickable tooltips, this value must\n * be set to `auto`.\n *\n * @sample {highcharts} highcharts/tooltip/style/\n * Greater padding, bold text\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '0.8em'\n },\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @since 2.2\n */\n useHTML: false\n },\n /**\n * Highchart by default puts a credits label in the lower right corner\n * of the chart. This can be changed using these options.\n */\n credits: {\n /**\n * Credits for map source to be concatenated with conventional credit\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapTextFull](#credits.mapTextFull)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default \\u00a9 {geojson.copyrightShort}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapText\n */\n /**\n * Detailed credits for map source to be displayed on hover of credits\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapText](#credits.mapText)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default {geojson.copyright}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapTextFull\n */\n /**\n * Whether to show the credits text.\n *\n * @sample {highcharts} highcharts/credits/enabled-false/\n * Credits disabled\n * @sample {highstock} stock/credits/enabled/\n * Credits disabled\n * @sample {highmaps} maps/credits/enabled-false/\n * Credits disabled\n */\n enabled: true,\n /**\n * The URL for the credits label.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n href: 'https://www.highcharts.com?credits',\n /**\n * Position configuration for the credits label.\n *\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n *\n * @type {Highcharts.AlignObject}\n * @since 2.1\n */\n position: {\n /** @internal */\n align: 'right',\n /** @internal */\n x: -10,\n /** @internal */\n verticalAlign: 'bottom',\n /** @internal */\n y: -5\n },\n /**\n * CSS styles for the credits label.\n *\n * @see In styled mode, credits styles can be set with the\n * `.highcharts-credits` class.\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n cursor: 'pointer',\n /** @internal */\n color: \"#999999\" /* Palette.neutralColor40 */,\n /** @internal */\n fontSize: '0.6em'\n },\n /**\n * The text for the credits label.\n *\n * @productdesc {highmaps}\n * If a map is loaded as GeoJSON, the text defaults to\n * `Highcharts @ {map-credits}`. Otherwise, it defaults to\n * `Highcharts.com`.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n text: 'Highcharts.com'\n }\n };\n /* eslint-disable spaced-comment */\n\n defaultOptions.chart.styledMode = false;\n\n '';\n const defaultTime = new Time(defaultOptions.time);\n /**\n * Get the updated default options. Until 3.0.7, merely exposing defaultOptions\n * for outside modules wasn't enough because the setOptions method created a new\n * object.\n *\n * @function Highcharts.getOptions\n *\n * @return {Highcharts.Options}\n * Default options.\n */\n function getOptions() {\n return defaultOptions;\n }\n /**\n * Merge the default options with custom options and return the new options\n * structure. Commonly used for defining reusable templates.\n *\n * @sample highcharts/global/useutc-false Setting a global option\n * @sample highcharts/members/setoptions Applying a global theme\n *\n * @function Highcharts.setOptions\n *\n * @param {Highcharts.Options} options\n * The new custom chart options.\n *\n * @return {Highcharts.Options}\n * Updated options.\n */\n function setOptions(options) {\n // Copy in the default options\n merge(true, defaultOptions, options);\n // Update the time object\n if (options.time || options.global) {\n if (H.time) {\n H.time.update(merge(defaultOptions.global, defaultOptions.time, options.global, options.time));\n }\n else {\n /**\n * Global `Time` object with default options. Since v6.0.5, time\n * settings can be applied individually for each chart. If no\n * individual settings apply, this `Time` object is shared by all\n * instances.\n *\n * @name Highcharts.time\n * @type {Highcharts.Time}\n */\n H.time = defaultTime;\n }\n }\n return defaultOptions;\n }\n /* *\n *\n * Default Export\n *\n * */\n const DefaultOptions = {\n defaultOptions,\n defaultTime,\n getOptions,\n setOptions\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"plotBox\"|\"spacingBox\"} Highcharts.ButtonRelativeToValue\n */\n /**\n * Gets fired when a series is added to the chart after load time, using the\n * `addSeries` method. Returning `false` prevents the series from being added.\n *\n * @callback Highcharts.ChartAddSeriesCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.ChartAddSeriesEventObject} event\n * The event that occured.\n */\n /**\n * Contains common event information. Through the `options` property you can\n * access the series options that were passed to the `addSeries` method.\n *\n * @interface Highcharts.ChartAddSeriesEventObject\n */ /**\n * The series options that were passed to the `addSeries` method.\n * @name Highcharts.ChartAddSeriesEventObject#options\n * @type {Highcharts.SeriesOptionsType}\n */ /**\n * Prevents the default behaviour of the event.\n * @name Highcharts.ChartAddSeriesEventObject#preventDefault\n * @type {Function}\n */ /**\n * The event target.\n * @name Highcharts.ChartAddSeriesEventObject#target\n * @type {Highcharts.Chart}\n */ /**\n * The event type.\n * @name Highcharts.ChartAddSeriesEventObject#type\n * @type {\"addSeries\"}\n */\n /**\n * Gets fired when clicking on the plot background.\n *\n * @callback Highcharts.ChartClickCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.PointerEventObject} event\n * The event that occured.\n */\n /**\n * Contains an axes of the clicked spot.\n *\n * @interface Highcharts.ChartClickEventAxisObject\n */ /**\n * Axis at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#value\n * @type {number}\n */\n /**\n * Contains information about the clicked spot on the chart. Remember the unit\n * of a datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.ChartClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Information about the x-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#xAxis\n * @type {Array}\n */ /**\n * Information about the y-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#yAxis\n * @type {Array}\n */ /**\n * Information about the z-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#zAxis\n * @type {Array|undefined}\n */\n /**\n * Gets fired when the chart is finished loading.\n *\n * @callback Highcharts.ChartLoadCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Fires when the chart is redrawn, either after a call to `chart.redraw()` or\n * after an axis, series or point is modified with the `redraw` option set to\n * `true`.\n *\n * @callback Highcharts.ChartRedrawCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired after initial load of the chart (directly after the `load` event),\n * and after each redraw (directly after the `redraw` event).\n *\n * @callback Highcharts.ChartRenderCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired when an area of the chart has been selected. The default action\n * for the selection event is to zoom the chart to the selected area. It can be\n * prevented by calling `event.preventDefault()` or return false.\n *\n * @callback Highcharts.ChartSelectionCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.SelectEventObject} event\n * Event informations\n *\n * @return {boolean|undefined}\n * Return false to prevent the default action, usually zoom.\n */\n (''); // detach doclets above\n\n return DefaultOptions;\n });\n _registerModule(_modules, 'Core/Animation/Fx.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { parse: color } = Color;\n const { win } = H;\n const { isNumber, objectEach } = U;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * An animator object used internally. One instance applies to one property\n * (attribute or style prop) on one element. Animation is always initiated\n * through {@link SVGElement#animate}.\n *\n * @example\n * let rect = renderer.rect(0, 0, 10, 10).add();\n * rect.animate({ width: 100 });\n *\n * @private\n * @class\n * @name Highcharts.Fx\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} elem\n * The element to animate.\n *\n * @param {Partial} options\n * Animation options.\n *\n * @param {string} prop\n * The single attribute or CSS property to animate.\n */\n class Fx {\n /* *\n *\n * Constructors\n *\n * */\n constructor(elem, options, prop) {\n this.pos = NaN;\n this.options = options;\n this.elem = elem;\n this.prop = prop;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the current step of a path definition on SVGElement.\n *\n * @function Highcharts.Fx#dSetter\n *\n */\n dSetter() {\n const paths = this.paths, start = paths && paths[0], end = paths && paths[1], now = this.now || 0;\n let path = [];\n // Land on the final path without adjustment points appended in the ends\n if (now === 1 || !start || !end) {\n path = this.toD || [];\n }\n else if (start.length === end.length && now < 1) {\n for (let i = 0; i < end.length; i++) {\n // Tween between the start segment and the end segment. Start\n // with a copy of the end segment and tween the appropriate\n // numerics\n const startSeg = start[i];\n const endSeg = end[i];\n const tweenSeg = [];\n for (let j = 0; j < endSeg.length; j++) {\n const startItem = startSeg[j];\n const endItem = endSeg[j];\n // Tween numbers\n if (isNumber(startItem) &&\n isNumber(endItem) &&\n // Arc boolean flags\n !(endSeg[0] === 'A' && (j === 4 || j === 5))) {\n tweenSeg[j] = startItem + now * (endItem - startItem);\n // Strings, take directly from the end segment\n }\n else {\n tweenSeg[j] = endItem;\n }\n }\n path.push(tweenSeg);\n }\n // If animation is finished or length not matching, land on right value\n }\n else {\n path = end;\n }\n this.elem.attr('d', path, void 0, true);\n }\n /**\n * Update the element with the current animation step.\n *\n * @function Highcharts.Fx#update\n *\n */\n update() {\n const elem = this.elem, prop = this.prop, // if destroyed, it is null\n now = this.now, step = this.options.step;\n // Animation setter defined from outside\n if (this[prop + 'Setter']) {\n this[prop + 'Setter']();\n // Other animations on SVGElement\n }\n else if (elem.attr) {\n if (elem.element) {\n elem.attr(prop, now, null, true);\n }\n // HTML styles, raw HTML content like container size\n }\n else {\n elem.style[prop] = now + this.unit;\n }\n if (step) {\n step.call(elem, now, this);\n }\n }\n /**\n * Run an animation.\n *\n * @function Highcharts.Fx#run\n *\n * @param {number} from\n * The current value, value to start from.\n *\n * @param {number} to\n * The end value, value to land on.\n *\n * @param {string} unit\n * The property unit, for example `px`.\n *\n */\n run(from, to, unit) {\n const self = this, options = self.options, timer = function (gotoEnd) {\n return timer.stopped ? false : self.step(gotoEnd);\n }, requestAnimationFrame = win.requestAnimationFrame ||\n function (step) {\n setTimeout(step, 13);\n }, step = function () {\n for (let i = 0; i < Fx.timers.length; i++) {\n if (!Fx.timers[i]()) {\n Fx.timers.splice(i--, 1);\n }\n }\n if (Fx.timers.length) {\n requestAnimationFrame(step);\n }\n };\n if (from === to && !this.elem['forceAnimate:' + this.prop]) {\n delete options.curAnim[this.prop];\n if (options.complete &&\n Object.keys(options.curAnim).length === 0) {\n options.complete.call(this.elem);\n }\n }\n else { // #7166\n this.startTime = +new Date();\n this.start = from;\n this.end = to;\n this.unit = unit;\n this.now = this.start;\n this.pos = 0;\n timer.elem = this.elem;\n timer.prop = this.prop;\n if (timer() && Fx.timers.push(timer) === 1) {\n requestAnimationFrame(step);\n }\n }\n }\n /**\n * Run a single step in the animation.\n *\n * @function Highcharts.Fx#step\n *\n * @param {boolean} [gotoEnd]\n * Whether to go to the endpoint of the animation after abort.\n *\n * @return {boolean}\n * Returns `true` if animation continues.\n */\n step(gotoEnd) {\n const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;\n let ret, done;\n if ((elem.attr) && !elem.element) { // #2616, element is destroyed\n ret = false;\n }\n else if (gotoEnd || t >= duration + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n curAnim[this.prop] = true;\n done = true;\n objectEach(curAnim, function (val) {\n if (val !== true) {\n done = false;\n }\n });\n if (done && complete) {\n complete.call(elem);\n }\n ret = false;\n }\n else {\n this.pos = options.easing((t - this.startTime) / duration);\n this.now = this.start + ((this.end -\n this.start) * this.pos);\n this.update();\n ret = true;\n }\n return ret;\n }\n /**\n * Prepare start and end values so that the path can be animated one to one.\n *\n * @function Highcharts.Fx#initPath\n *\n * @param {Highcharts.SVGElement} elem\n * The SVGElement item.\n *\n * @param {Highcharts.SVGPathArray|undefined} fromD\n * Starting path definition.\n *\n * @param {Highcharts.SVGPathArray} toD\n * Ending path definition.\n *\n * @return {Array}\n * An array containing start and end paths in array form so that\n * they can be animated in parallel.\n */\n initPath(elem, fromD, toD) {\n const startX = elem.startX, endX = elem.endX, end = toD.slice(), // copy\n isArea = elem.isArea, positionFactor = isArea ? 2 : 1;\n let shift, fullLength, i, reverse, start = fromD && fromD.slice(); // copy\n if (!start) {\n return [end, end];\n }\n /**\n * If shifting points, prepend a dummy point to the end path.\n * @private\n */\n function prepend(arr, other) {\n while (arr.length < fullLength) {\n // Move to, line to or curve to?\n const moveSegment = arr[0], otherSegment = other[fullLength - arr.length];\n if (otherSegment && moveSegment[0] === 'M') {\n if (otherSegment[0] === 'C') {\n arr[0] = [\n 'C',\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2]\n ];\n }\n else {\n arr[0] = ['L', moveSegment[1], moveSegment[2]];\n }\n }\n // Prepend a copy of the first point\n arr.unshift(moveSegment);\n // For areas, the bottom path goes back again to the left, so we\n // need to append a copy of the last point.\n if (isArea) {\n const z = arr.pop();\n arr.push(arr[arr.length - 1], z); // append point and the Z\n }\n }\n }\n /**\n * Copy and append last point until the length matches the end length.\n * @private\n */\n function append(arr, other) {\n while (arr.length < fullLength) {\n // Pull out the slice that is going to be appended or inserted.\n // In a line graph, the positionFactor is 1, and the last point\n // is sliced out. In an area graph, the positionFactor is 2,\n // causing the middle two points to be sliced out, since an area\n // path starts at left, follows the upper path then turns and\n // follows the bottom back.\n const segmentToAdd = arr[Math.floor(arr.length / positionFactor) - 1].slice();\n // Disable the first control point of curve segments\n if (segmentToAdd[0] === 'C') {\n segmentToAdd[1] = segmentToAdd[5];\n segmentToAdd[2] = segmentToAdd[6];\n }\n if (!isArea) {\n arr.push(segmentToAdd);\n }\n else {\n const lowerSegmentToAdd = arr[Math.floor(arr.length / positionFactor)].slice();\n arr.splice(arr.length / 2, 0, segmentToAdd, lowerSegmentToAdd);\n }\n }\n }\n // For sideways animation, find out how much we need to shift to get the\n // start path Xs to match the end path Xs.\n if (startX && endX && endX.length) {\n for (i = 0; i < startX.length; i++) {\n // Moving left, new points coming in on right\n if (startX[i] === endX[0]) {\n shift = i;\n break;\n // Moving right\n }\n else if (startX[0] ===\n endX[endX.length - startX.length + i]) {\n shift = i;\n reverse = true;\n break;\n // Fixed from the right side, \"scaling\" left\n }\n else if (startX[startX.length - 1] ===\n endX[endX.length - startX.length + i]) {\n shift = startX.length - i;\n break;\n }\n }\n if (typeof shift === 'undefined') {\n start = [];\n }\n }\n if (start.length && isNumber(shift)) {\n // The common target length for the start and end array, where both\n // arrays are padded in opposite ends\n fullLength = end.length + shift * positionFactor;\n if (!reverse) {\n prepend(end, start);\n append(start, end);\n }\n else {\n prepend(start, end);\n append(end, start);\n }\n }\n return [start, end];\n }\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#fillSetter\n *\n */\n fillSetter() {\n Fx.prototype.strokeSetter.apply(this, arguments);\n }\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#strokeSetter\n *\n */\n strokeSetter() {\n this.elem.attr(this.prop, color(this.start).tweenTo(color(this.end), this.pos), void 0, true);\n }\n }\n /* *\n *\n * Static Properties\n *\n * */\n Fx.timers = [];\n /* *\n *\n * Default Export\n *\n * */\n\n return Fx;\n });\n _registerModule(_modules, 'Core/Animation/AnimationUtilities.js', [_modules['Core/Animation/Fx.js'], _modules['Core/Utilities.js']], function (Fx, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { defined, getStyle, isArray, isNumber, isObject, merge, objectEach, pick } = U;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the global animation to either a given value, or fall back to the given\n * chart's animation option.\n *\n * @function Highcharts.setAnimation\n *\n * @param {boolean|Partial|undefined} animation\n * The animation object.\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @todo\n * This function always relates to a chart, and sets a property on the renderer,\n * so it should be moved to the SVGRenderer.\n */\n function setAnimation(animation, chart) {\n chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);\n }\n /**\n * Get the animation in object form, where a disabled animation is always\n * returned as `{ duration: 0 }`.\n *\n * @function Highcharts.animObject\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} [animation=0]\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @return {Highcharts.AnimationOptionsObject}\n * An object with at least a duration property.\n */\n function animObject(animation) {\n return isObject(animation) ?\n merge({ duration: 500, defer: 0 }, animation) :\n { duration: animation ? 500 : 0, defer: 0 };\n }\n /**\n * Get the defer as a number value from series animation options.\n *\n * @function Highcharts.getDeferredAnimation\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} animation\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @param {Highcharts.Series} [series]\n * Series to defer animation.\n *\n * @return {number}\n * The numeric value.\n */\n function getDeferredAnimation(chart, animation, series) {\n const labelAnimation = animObject(animation), s = series ? [series] : chart.series;\n let defer = 0, duration = 0;\n s.forEach((series) => {\n const seriesAnim = animObject(series.options.animation);\n defer = animation && defined(animation.defer) ?\n labelAnimation.defer :\n Math.max(defer, seriesAnim.duration + seriesAnim.defer);\n duration = Math.min(labelAnimation.duration, seriesAnim.duration);\n });\n // Disable defer for exporting\n if (chart.renderer.forExport) {\n defer = 0;\n }\n const anim = {\n defer: Math.max(0, defer - duration),\n duration: Math.min(defer, duration)\n };\n return anim;\n }\n /**\n * The global animate method, which uses Fx to create individual animators.\n *\n * @function Highcharts.animate\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el\n * The element to animate.\n *\n * @param {Highcharts.CSSObject|Highcharts.SVGAttributes} params\n * An object containing key-value pairs of the properties to animate.\n * Supports numeric as pixel-based CSS properties for HTML objects and\n * attributes for SVGElements.\n *\n * @param {Partial} [opt]\n * Animation options.\n *\n * @return {void}\n */\n function animate(el, params, opt) {\n let start, unit = '', end, fx, args;\n if (!isObject(opt)) { // Number or undefined/null\n args = arguments;\n opt = {\n duration: args[2],\n easing: args[3],\n complete: args[4]\n };\n }\n if (!isNumber(opt.duration)) {\n opt.duration = 400;\n }\n opt.easing = typeof opt.easing === 'function' ?\n opt.easing :\n (Math[opt.easing] || Math.easeInOutSine);\n opt.curAnim = merge(params);\n objectEach(params, function (val, prop) {\n // Stop current running animation of this property\n stop(el, prop);\n fx = new Fx(el, opt, prop);\n end = void 0;\n if (prop === 'd' && isArray(params.d)) {\n fx.paths = fx.initPath(el, el.pathArray, params.d);\n fx.toD = params.d;\n start = 0;\n end = 1;\n }\n else if (el.attr) {\n start = el.attr(prop);\n }\n else {\n start = parseFloat(getStyle(el, prop)) || 0;\n if (prop !== 'opacity') {\n unit = 'px';\n }\n }\n if (!end) {\n end = val;\n }\n if (typeof end === 'string' && end.match('px')) {\n end = end.replace(/px/g, ''); // #4351\n }\n fx.run(start, end, unit);\n });\n }\n /**\n * Stop running animation.\n *\n * @function Highcharts.stop\n *\n * @param {Highcharts.SVGElement} el\n * The SVGElement to stop animation on.\n *\n * @param {string} [prop]\n * The property to stop animating. If given, the stop method will stop a\n * single property from animating, while others continue.\n *\n * @return {void}\n *\n * @todo\n * A possible extension to this would be to stop a single property, when\n * we want to continue animating others. Then assign the prop to the timer\n * in the Fx.run method, and check for the prop here. This would be an\n * improvement in all cases where we stop the animation from .attr. Instead of\n * stopping everything, we can just stop the actual attributes we're setting.\n */\n function stop(el, prop) {\n let i = Fx.timers.length;\n // Remove timers related to this element (#4519)\n while (i--) {\n if (Fx.timers[i].elem === el && (!prop || prop === Fx.timers[i].prop)) {\n Fx.timers[i].stopped = true; // #4667\n }\n }\n }\n const animationExports = {\n animate,\n animObject,\n getDeferredAnimation,\n setAnimation,\n stop\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return animationExports;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/AST.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { SVG_NS, win } = H;\n const { attr, createElement, css, error, isFunction, isString, objectEach, splat } = U;\n const { trustedTypes } = win;\n /* *\n *\n * Constants\n *\n * */\n // Create the trusted type policy. This should not be exposed.\n const trustedTypesPolicy = (trustedTypes &&\n isFunction(trustedTypes.createPolicy) &&\n trustedTypes.createPolicy('highcharts', {\n createHTML: (s) => s\n }));\n const emptyHTML = trustedTypesPolicy ?\n trustedTypesPolicy.createHTML('') :\n '';\n // IE9 and PhantomJS are only able to parse XML.\n const hasValidDOMParser = (function () {\n try {\n return Boolean(new DOMParser().parseFromString(emptyHTML, 'text/html'));\n }\n catch (e) {\n return false;\n }\n }());\n /* *\n *\n * Class\n *\n * */\n /**\n * The AST class represents an abstract syntax tree of HTML or SVG content. It\n * can take HTML as an argument, parse it, optionally transform it to SVG, then\n * perform sanitation before inserting it into the DOM.\n *\n * @class\n * @name Highcharts.AST\n *\n * @param {string|Array} source\n * Either an HTML string or an ASTNode list to populate the tree.\n */\n class AST {\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Filter an object of SVG or HTML attributes against the allow list.\n *\n * @static\n *\n * @function Highcharts.AST#filterUserAttributes\n *\n * @param {Highcharts.SVGAttributes} attributes The attributes to filter\n *\n * @return {Highcharts.SVGAttributes}\n * The filtered attributes\n */\n static filterUserAttributes(attributes) {\n objectEach(attributes, (val, key) => {\n let valid = true;\n if (AST.allowedAttributes.indexOf(key) === -1) {\n valid = false;\n }\n if (['background', 'dynsrc', 'href', 'lowsrc', 'src']\n .indexOf(key) !== -1) {\n valid = isString(val) && AST.allowedReferences.some((ref) => val.indexOf(ref) === 0);\n }\n if (!valid) {\n error(33, false, void 0, {\n 'Invalid attribute in config': `${key}`\n });\n delete attributes[key];\n }\n // #17753, < is not allowed in SVG attributes\n if (isString(val) && attributes[key]) {\n attributes[key] = val.replace(/ {\n const pair = line.split(':').map((s) => s.trim()), key = pair.shift();\n if (key && pair.length) {\n styles[key.replace(/-([a-z])/g, (g) => g[1].toUpperCase())] = pair.join(':'); // #17146\n }\n return styles;\n }, {});\n }\n /**\n * Utility function to set html content for an element by passing in a\n * markup string. The markup is safely parsed by the AST class to avoid\n * XSS vulnerabilities. This function should be used instead of setting\n * `innerHTML` in all cases where the content is not fully trusted.\n *\n * @static\n * @function Highcharts.AST#setElementHTML\n *\n * @param {SVGDOMElement|HTMLDOMElement} el\n * Node to set content of.\n *\n * @param {string} html\n * Markup string\n */\n static setElementHTML(el, html) {\n el.innerHTML = AST.emptyHTML; // Clear previous\n if (html) {\n const ast = new AST(html);\n ast.addToDOM(el);\n }\n }\n /* *\n *\n * Constructor\n *\n * */\n // Construct an AST from HTML markup, or wrap an array of existing AST nodes\n constructor(source) {\n this.nodes = typeof source === 'string' ?\n this.parseMarkup(source) : source;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add the tree defined as a hierarchical JS structure to the DOM\n *\n * @function Highcharts.AST#addToDOM\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} parent\n * The node where it should be added\n *\n * @return {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement}\n * The inserted node.\n */\n addToDOM(parent) {\n /**\n * @private\n * @param {Highcharts.ASTNode} subtree\n * HTML/SVG definition\n * @param {Element} [subParent]\n * parent node\n * @return {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n * The inserted node.\n */\n function recurse(subtree, subParent) {\n let ret;\n splat(subtree).forEach(function (item) {\n const tagName = item.tagName;\n const textNode = item.textContent ?\n H.doc.createTextNode(item.textContent) :\n void 0;\n // Whether to ignore the AST filtering totally, #15345\n const bypassHTMLFiltering = AST.bypassHTMLFiltering;\n let node;\n if (tagName) {\n if (tagName === '#text') {\n node = textNode;\n }\n else if (AST.allowedTags.indexOf(tagName) !== -1 ||\n bypassHTMLFiltering) {\n const NS = tagName === 'svg' ?\n SVG_NS :\n (subParent.namespaceURI || SVG_NS);\n const element = H.doc.createElementNS(NS, tagName);\n const attributes = item.attributes || {};\n // Apply attributes from root of AST node, legacy from\n // from before TextBuilder\n objectEach(item, function (val, key) {\n if (key !== 'tagName' &&\n key !== 'attributes' &&\n key !== 'children' &&\n key !== 'style' &&\n key !== 'textContent') {\n attributes[key] = val;\n }\n });\n attr(element, bypassHTMLFiltering ?\n attributes :\n AST.filterUserAttributes(attributes));\n if (item.style) {\n css(element, item.style);\n }\n // Add text content\n if (textNode) {\n element.appendChild(textNode);\n }\n // Recurse\n recurse(item.children || [], element);\n node = element;\n }\n else {\n error(33, false, void 0, {\n 'Invalid tagName in config': tagName\n });\n }\n }\n // Add to the tree\n if (node) {\n subParent.appendChild(node);\n }\n ret = node;\n });\n // Return last node added (on top level it's the only one)\n return ret;\n }\n return recurse(this.nodes, parent);\n }\n /**\n * Parse HTML/SVG markup into AST Node objects. Used internally from the\n * constructor.\n *\n * @private\n *\n * @function Highcharts.AST#getNodesFromMarkup\n *\n * @param {string} markup The markup string.\n *\n * @return {Array} The parsed nodes.\n */\n parseMarkup(markup) {\n const nodes = [];\n markup = markup\n .trim()\n // The style attribute throws a warning when parsing when CSP is\n // enabled (#6884), so use an alias and pick it up below\n // Make all quotation marks parse correctly to DOM (#17627)\n .replace(/ style=([\"'])/g, ' data-style=$1');\n let doc;\n if (hasValidDOMParser) {\n doc = new DOMParser().parseFromString(trustedTypesPolicy ?\n trustedTypesPolicy.createHTML(markup) :\n markup, 'text/html');\n }\n else {\n const body = createElement('div');\n body.innerHTML = markup;\n doc = { body };\n }\n const appendChildNodes = (node, addTo) => {\n const tagName = node.nodeName.toLowerCase();\n // Add allowed tags\n const astNode = {\n tagName\n };\n if (tagName === '#text') {\n astNode.textContent = node.textContent || '';\n }\n const parsedAttributes = node.attributes;\n // Add attributes\n if (parsedAttributes) {\n const attributes = {};\n [].forEach.call(parsedAttributes, (attrib) => {\n if (attrib.name === 'data-style') {\n astNode.style = AST.parseStyle(attrib.value);\n }\n else {\n attributes[attrib.name] = attrib.value;\n }\n });\n astNode.attributes = attributes;\n }\n // Handle children\n if (node.childNodes.length) {\n const children = [];\n [].forEach.call(node.childNodes, (childNode) => {\n appendChildNodes(childNode, children);\n });\n if (children.length) {\n astNode.children = children;\n }\n }\n addTo.push(astNode);\n };\n [].forEach.call(doc.body.childNodes, (childNode) => appendChildNodes(childNode, nodes));\n return nodes;\n }\n }\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * The list of allowed SVG or HTML attributes, used for sanitizing\n * potentially harmful content from the chart configuration before adding to\n * the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedAttributes)\n *\n * @example\n * // Allow a custom, trusted attribute\n * Highcharts.AST.allowedAttributes.push('data-value');\n *\n * @name Highcharts.AST.allowedAttributes\n * @type {Array}\n */\n AST.allowedAttributes = [\n 'alt',\n 'aria-controls',\n 'aria-describedby',\n 'aria-expanded',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'aria-live',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-roledescription',\n 'aria-selected',\n 'class',\n 'clip-path',\n 'color',\n 'colspan',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'disabled',\n 'fill',\n 'flood-color',\n 'flood-opacity',\n 'height',\n 'href',\n 'id',\n 'in',\n 'markerHeight',\n 'markerWidth',\n 'offset',\n 'opacity',\n 'orient',\n 'padding',\n 'paddingLeft',\n 'paddingRight',\n 'patternUnits',\n 'r',\n 'refX',\n 'refY',\n 'role',\n 'scope',\n 'slope',\n 'src',\n 'startOffset',\n 'stdDeviation',\n 'stroke',\n 'stroke-linecap',\n 'stroke-width',\n 'style',\n 'tableValues',\n 'result',\n 'rowspan',\n 'summary',\n 'target',\n 'tabindex',\n 'text-align',\n 'text-anchor',\n 'textAnchor',\n 'textLength',\n 'title',\n 'type',\n 'valign',\n 'width',\n 'x',\n 'x1',\n 'x2',\n 'xlink:href',\n 'y',\n 'y1',\n 'y2',\n 'zIndex'\n ];\n /**\n * The list of allowed references for referring attributes like `href` and\n * `src`. Attribute values will only be allowed if they start with one of\n * these strings.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedReferences)\n *\n * @example\n * // Allow tel:\n * Highcharts.AST.allowedReferences.push('tel:');\n *\n * @name Highcharts.AST.allowedReferences\n * @type {Array}\n */\n AST.allowedReferences = [\n 'https://',\n 'http://',\n 'mailto:',\n '/',\n '../',\n './',\n '#'\n ];\n /**\n * The list of allowed SVG or HTML tags, used for sanitizing potentially\n * harmful content from the chart configuration before adding to the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedTags)\n *\n * @example\n * // Allow a custom, trusted tag\n * Highcharts.AST.allowedTags.push('blink'); // ;)\n *\n * @name Highcharts.AST.allowedTags\n * @type {Array}\n */\n AST.allowedTags = [\n 'a',\n 'abbr',\n 'b',\n 'br',\n 'button',\n 'caption',\n 'circle',\n 'clipPath',\n 'code',\n 'dd',\n 'defs',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'feComponentTransfer',\n 'feDropShadow',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feOffset',\n 'feMerge',\n 'feMergeNode',\n 'filter',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'li',\n 'linearGradient',\n 'marker',\n 'ol',\n 'p',\n 'path',\n 'pattern',\n 'pre',\n 'rect',\n 'small',\n 'span',\n 'stop',\n 'strong',\n 'style',\n 'sub',\n 'sup',\n 'svg',\n 'table',\n 'text',\n 'textPath',\n 'thead',\n 'title',\n 'tbody',\n 'tspan',\n 'td',\n 'th',\n 'tr',\n 'u',\n 'ul',\n '#text'\n ];\n AST.emptyHTML = emptyHTML;\n /**\n * Allow all custom SVG and HTML attributes, references and tags (together\n * with potentially harmful ones) to be added to the DOM from the chart\n * configuration. In other words, disable the the allow-listing which is the\n * primary functionality of the AST.\n *\n * WARNING: Setting this property to `true` while allowing untrusted user\n * data in the chart configuration will expose your application to XSS\n * security risks!\n *\n * Note that in case you want to allow a known set of tags or attributes,\n * you should allow-list them instead of disabling the filtering totally.\n * See [allowedAttributes](Highcharts.AST#.allowedAttributes),\n * [allowedReferences](Highcharts.AST#.allowedReferences) and\n * [allowedTags](Highcharts.AST#.allowedTags). The `bypassHTMLFiltering`\n * setting is intended only for those cases where allow-listing is not\n * practical, and the chart configuration already comes from a secure\n * source.\n *\n * @example\n * // Allow all custom attributes, references and tags (disable DOM XSS\n * // filtering)\n * Highcharts.AST.bypassHTMLFiltering = true;\n *\n * @name Highcharts.AST.bypassHTMLFiltering\n * @static\n */\n AST.bypassHTMLFiltering = false;\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Serialized form of an SVG/HTML definition, including children.\n *\n * @interface Highcharts.ASTNode\n */ /**\n * @name Highcharts.ASTNode#attributes\n * @type {Highcharts.SVGAttributes|undefined}\n */ /**\n * @name Highcharts.ASTNode#children\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.ASTNode#tagName\n * @type {string|undefined}\n */ /**\n * @name Highcharts.ASTNode#textContent\n * @type {string|undefined}\n */\n (''); // keeps doclets above in file\n\n return AST;\n });\n _registerModule(_modules, 'Core/FormatUtilities.js', [_modules['Core/Defaults.js'], _modules['Core/Utilities.js']], function (D, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { defaultOptions, defaultTime } = D;\n const { getNestedProperty, isNumber, pick, pInt } = U;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970) into a\n * human readable date string. The format is a subset of the formats for PHP's\n * [strftime](https://www.php.net/manual/en/function.strftime.php) function.\n * Additional formats can be given in the {@link Highcharts.dateFormats} hook.\n *\n * Since v6.0.5, all internal dates are formatted through the\n * {@link Highcharts.Chart#time} instance to respect chart-level time settings.\n * The `Highcharts.dateFormat` function only reflects global time settings set\n * with `setOptions`.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @function Highcharts.dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are prefixed\n * with `%`.\n *\n * @param {number} timestamp\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n function dateFormat(format, timestamp, capitalize) {\n return defaultTime.dateFormat(format, timestamp, capitalize);\n }\n /**\n * Format a string according to a subset of the rules of Python's String.format\n * method.\n *\n * @example\n * let s = Highcharts.format(\n * 'The {color} fox was {len:.2f} feet long',\n * { color: 'red', len: Math.PI }\n * );\n * // => The red fox was 3.14 feet long\n *\n * @function Highcharts.format\n *\n * @param {string} str\n * The string to format.\n *\n * @param {Record} ctx\n * The context, a collection of key-value pairs where each key is\n * replaced by its value.\n *\n * @param {Highcharts.Chart} [chart]\n * A `Chart` instance used to get numberFormatter and time.\n *\n * @return {string}\n * The formatted string.\n */\n function format(str, ctx, chart) {\n let splitter = '{', isInside = false, segment, valueAndFormat, val, index;\n const floatRegex = /f$/;\n const decRegex = /\\.([0-9])/;\n const lang = defaultOptions.lang;\n const time = chart && chart.time || defaultTime;\n const numberFormatter = chart && chart.numberFormatter || numberFormat;\n const ret = [];\n while (str) {\n index = str.indexOf(splitter);\n if (index === -1) {\n break;\n }\n segment = str.slice(0, index);\n if (isInside) { // we're on the closing bracket looking back\n valueAndFormat = segment.split(':');\n val = getNestedProperty(valueAndFormat.shift() || '', ctx);\n // Format the replacement\n if (valueAndFormat.length && typeof val === 'number') {\n segment = valueAndFormat.join(':');\n if (floatRegex.test(segment)) { // float\n const decimals = parseInt((segment.match(decRegex) || ['', '-1'])[1], 10);\n if (val !== null) {\n val = numberFormatter(val, decimals, lang.decimalPoint, segment.indexOf(',') > -1 ? lang.thousandsSep : '');\n }\n }\n else {\n val = time.dateFormat(segment, val);\n }\n }\n // Push the result and advance the cursor\n ret.push(val);\n }\n else {\n ret.push(segment);\n }\n str = str.slice(index + 1); // the rest\n isInside = !isInside; // toggle\n splitter = isInside ? '}' : '{'; // now look for next matching bracket\n }\n ret.push(str);\n return ret.join('');\n }\n /**\n * Format a number and return a string based on input settings.\n *\n * @sample highcharts/members/highcharts-numberformat/\n * Custom number format\n *\n * @function Highcharts.numberFormat\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string}\n * The formatted number.\n */\n function numberFormat(number, decimals, decimalPoint, thousandsSep) {\n number = +number || 0;\n decimals = +decimals;\n let ret, fractionDigits;\n const lang = defaultOptions.lang, origDec = (number.toString().split('.')[1] || '').split('e')[0].length, exponent = number.toString().split('e'), firstDecimals = decimals;\n if (decimals === -1) {\n // Preserve decimals. Not huge numbers (#3793).\n decimals = Math.min(origDec, 20);\n }\n else if (!isNumber(decimals)) {\n decimals = 2;\n }\n else if (decimals && exponent[1] && exponent[1] < 0) {\n // Expose decimals from exponential notation (#7042)\n fractionDigits = decimals + +exponent[1];\n if (fractionDigits >= 0) {\n // remove too small part of the number while keeping the notation\n exponent[0] = (+exponent[0]).toExponential(fractionDigits)\n .split('e')[0];\n decimals = fractionDigits;\n }\n else {\n // fractionDigits < 0\n exponent[0] = exponent[0].split('.')[0] || 0;\n if (decimals < 20) {\n // use number instead of exponential notation (#7405)\n number = (exponent[0] * Math.pow(10, exponent[1]))\n .toFixed(decimals);\n }\n else {\n // or zero\n number = 0;\n }\n exponent[1] = 0;\n }\n }\n // Add another decimal to avoid rounding errors of float numbers. (#4573)\n // Then use toFixed to handle rounding.\n const roundedNumber = (Math.abs(exponent[1] ? exponent[0] : number) +\n Math.pow(10, -Math.max(decimals, origDec) - 1)).toFixed(decimals);\n // A string containing the positive integer component of the number\n const strinteger = String(pInt(roundedNumber));\n // Leftover after grouping into thousands. Can be 0, 1 or 2.\n const thousands = strinteger.length > 3 ? strinteger.length % 3 : 0;\n // Language\n decimalPoint = pick(decimalPoint, lang.decimalPoint);\n thousandsSep = pick(thousandsSep, lang.thousandsSep);\n // Start building the return\n ret = number < 0 ? '-' : '';\n // Add the leftover after grouping into thousands. For example, in the\n // number 42 000 000, this line adds 42.\n ret += thousands ? strinteger.substr(0, thousands) + thousandsSep : '';\n if (+exponent[1] < 0 && !firstDecimals) {\n ret = '0';\n }\n else {\n // Add the remaining thousands groups, joined by the thousands separator\n ret += strinteger\n .substr(thousands)\n .replace(/(\\d{3})(?=\\d)/g, '$1' + thousandsSep);\n }\n // Add the decimal point and the decimal component\n if (decimals) {\n // Get the decimal component\n ret += decimalPoint + roundedNumber.slice(-decimals);\n }\n if (exponent[1] && +ret !== 0) {\n ret += 'e' + exponent[1];\n }\n return ret;\n }\n /* *\n *\n * Default Export\n *\n * */\n const FormatUtilities = {\n dateFormat,\n format,\n numberFormat\n };\n\n return FormatUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/RendererUtilities.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Imports\n *\n * */\n const { clamp, pick, stableSort } = U;\n /* *\n *\n * Namespace\n *\n * */\n var RendererUtilities;\n (function (RendererUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * General distribution algorithm for distributing labels of differing size\n * along a confined length in two dimensions. The algorithm takes an array\n * of objects containing a size, a target and a rank. It will place the\n * labels as close as possible to their targets, skipping the lowest ranked\n * labels if necessary.\n * @private\n */\n function distribute(boxes, len, maxDistance) {\n // Original array will be altered with added .pos\n const origBoxes = boxes, reducedLen = origBoxes.reducedLen || len, sortByRank = (a, b) => (b.rank || 0) - (a.rank || 0), sortByTarget = (a, b) => a.target - b.target;\n let i, overlapping = true, restBoxes = [], // The outranked overshoot\n box, target, total = 0;\n // If the total size exceeds the len, remove those boxes with the lowest\n // rank\n i = boxes.length;\n while (i--) {\n total += boxes[i].size;\n }\n // Sort by rank, then slice away overshoot\n if (total > reducedLen) {\n stableSort(boxes, sortByRank);\n i = 0;\n total = 0;\n while (total <= reducedLen) {\n total += boxes[i].size;\n i++;\n }\n restBoxes = boxes.splice(i - 1, boxes.length);\n }\n // Order by target\n stableSort(boxes, sortByTarget);\n // So far we have been mutating the original array. Now\n // create a copy with target arrays\n boxes = boxes.map((box) => ({\n size: box.size,\n targets: [box.target],\n align: pick(box.align, 0.5)\n }));\n while (overlapping) {\n // Initial positions: target centered in box\n i = boxes.length;\n while (i--) {\n box = boxes[i];\n // Composite box, average of targets\n target = (Math.min.apply(0, box.targets) +\n Math.max.apply(0, box.targets)) / 2;\n box.pos = clamp(target - box.size * box.align, 0, len - box.size);\n }\n // Detect overlap and join boxes\n i = boxes.length;\n overlapping = false;\n while (i--) {\n // Overlap\n if (i > 0 &&\n boxes[i - 1].pos + boxes[i - 1].size >\n boxes[i].pos) {\n // Add this size to the previous box\n boxes[i - 1].size += boxes[i].size;\n boxes[i - 1].targets = boxes[i - 1]\n .targets\n .concat(boxes[i].targets);\n boxes[i - 1].align = 0.5;\n // Overlapping right, push left\n if (boxes[i - 1].pos + boxes[i - 1].size > len) {\n boxes[i - 1].pos = len - boxes[i - 1].size;\n }\n boxes.splice(i, 1); // Remove this item\n overlapping = true;\n }\n }\n }\n // Add the rest (hidden boxes)\n origBoxes.push.apply(origBoxes, restBoxes);\n // Now the composite boxes are placed, we need to put the original boxes\n // within them\n i = 0;\n boxes.some((box) => {\n let posInCompositeBox = 0;\n // Exceeded maxDistance => abort\n return (box.targets || []).some(() => {\n origBoxes[i].pos = box.pos + posInCompositeBox;\n // If the distance between the position and the target exceeds\n // maxDistance, abort the loop and decrease the length in\n // increments of 10% to recursively reduce the number of\n // visible boxes by rank. Once all boxes are within the\n // maxDistance, we're good.\n if (typeof maxDistance !== 'undefined' &&\n Math.abs(origBoxes[i].pos - origBoxes[i].target) > maxDistance) {\n // Reset the positions that are already set\n origBoxes\n .slice(0, i + 1)\n .forEach((box) => delete box.pos);\n // Try with a smaller length\n origBoxes.reducedLen =\n (origBoxes.reducedLen || len) - (len * 0.1);\n // Recurse\n if (origBoxes.reducedLen > len * 0.1) {\n distribute(origBoxes, len, maxDistance);\n }\n // Exceeded maxDistance => abort\n return true;\n }\n posInCompositeBox += origBoxes[i].size;\n i++;\n return false;\n });\n });\n // Add the rest (hidden) boxes and sort by target\n stableSort(origBoxes, sortByTarget);\n return origBoxes;\n }\n RendererUtilities.distribute = distribute;\n })(RendererUtilities || (RendererUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGElement.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (A, Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { animate, animObject, stop } = A;\n const { deg2rad, doc, noop, svg, SVG_NS, win } = H;\n const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, syncTimeout, uniqueKey } = U;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The SVGElement prototype is a JavaScript wrapper for SVG elements used in the\n * rendering layer of Highcharts. Combined with the\n * {@link Highcharts.SVGRenderer}\n * object, these prototypes allow freeform annotation in the charts or even in\n * HTML pages without instanciating a chart. The SVGElement can also wrap HTML\n * labels, when `text` or `label` elements are created with the `useHTML`\n * parameter.\n *\n * The SVGElement instances are created through factory functions on the\n * {@link Highcharts.SVGRenderer}\n * object, like\n * {@link Highcharts.SVGRenderer#rect|rect},\n * {@link Highcharts.SVGRenderer#path|path},\n * {@link Highcharts.SVGRenderer#text|text},\n * {@link Highcharts.SVGRenderer#label|label},\n * {@link Highcharts.SVGRenderer#g|g}\n * and more.\n *\n * @class\n * @name Highcharts.SVGElement\n */\n class SVGElement {\n constructor() {\n /* *\n *\n * Properties\n *\n * */\n this.element = void 0;\n this.onEvents = {};\n this.opacity = 1; // Default base for animation\n this.renderer = void 0;\n this.SVG_NS = SVG_NS;\n }\n // @todo public zIndex?: number;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current value of an attribute or pseudo attribute,\n * used mainly for animation. Called internally from\n * the {@link Highcharts.SVGRenderer#attr} function.\n *\n * @private\n * @function Highcharts.SVGElement#_defaultGetter\n *\n * @param {string} key\n * Property key.\n *\n * @return {number|string}\n * Property value.\n */\n _defaultGetter(key) {\n let ret = pick(this[key + 'Value'], // align getter\n this[key], this.element ? this.element.getAttribute(key) : null, 0);\n if (/^[\\-0-9\\.]+$/.test(ret)) { // is numerical\n ret = parseFloat(ret);\n }\n return ret;\n }\n /**\n * @private\n * @function Highcharts.SVGElement#_defaultSetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n _defaultSetter(value, key, element) {\n element.setAttribute(key, value);\n }\n /**\n * Add the element to the DOM. All elements must be added this way.\n *\n * @sample highcharts/members/renderer-g\n * Elements added to a group\n *\n * @function Highcharts.SVGElement#add\n *\n * @param {Highcharts.SVGElement} [parent]\n * The parent item to add it to. If undefined, the element is added\n * to the {@link Highcharts.SVGRenderer.box}.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n add(parent) {\n const renderer = this.renderer, element = this.element;\n let inserted;\n if (parent) {\n this.parentGroup = parent;\n }\n // Build formatted text\n if (typeof this.textStr !== 'undefined' &&\n this.element.nodeName === 'text' // Not for SVGLabel instances\n ) {\n renderer.buildText(this);\n }\n // Mark as added\n this.added = true;\n // If we're adding to renderer root, or other elements in the group\n // have a z index, we need to handle it\n if (!parent || parent.handleZ || this.zIndex) {\n inserted = this.zIndexSetter();\n }\n // If zIndex is not handled, append at the end\n if (!inserted) {\n (parent ?\n parent.element :\n renderer.box).appendChild(element);\n }\n // fire an event for internal hooks\n if (this.onAdd) {\n this.onAdd();\n }\n return this;\n }\n /**\n * Add a class name to an element.\n *\n * @function Highcharts.SVGElement#addClass\n *\n * @param {string} className\n * The new class name to add.\n *\n * @param {boolean} [replace=false]\n * When true, the existing class name(s) will be overwritten with the new\n * one. When false, the new one is added.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chainability.\n */\n addClass(className, replace) {\n const currentClassName = replace ? '' : (this.attr('class') || '');\n // Trim the string and remove duplicates\n className = (className || '')\n .split(/ /g)\n .reduce(function (newClassName, name) {\n if (currentClassName.indexOf(name) === -1) {\n newClassName.push(name);\n }\n return newClassName;\n }, (currentClassName ?\n [currentClassName] :\n []))\n .join(' ');\n if (className !== currentClassName) {\n this.attr('class', className);\n }\n return this;\n }\n /**\n * This method is executed in the end of `attr()`, after setting all\n * attributes in the hash. In can be used to efficiently consolidate\n * multiple attributes in one SVG property -- e.g., translate, rotate and\n * scale are merged in one \"transform\" attribute in the SVG node.\n *\n * @private\n * @function Highcharts.SVGElement#afterSetters\n */\n afterSetters() {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.updateTransform();\n this.doTransform = false;\n }\n }\n /**\n * Align the element relative to the chart or another box.\n *\n * @function Highcharts.SVGElement#align\n *\n * @param {Highcharts.AlignObject} [alignOptions]\n * The alignment options. The function can be called without this\n * parameter in order to re-align an element after the box has been\n * updated.\n *\n * @param {boolean} [alignByTranslate]\n * Align element by translation.\n *\n * @param {string|Highcharts.BBoxObject} [box]\n * The box to align to, needs a width and height. When the box is a\n * string, it refers to an object in the Renderer. For example, when\n * box is `spacingBox`, it refers to `Renderer.spacingBox` which\n * holds `width`, `height`, `x` and `y` properties.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n align(alignOptions, alignByTranslate, box) {\n const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects;\n let x, y, alignTo, alignFactor, vAlignFactor;\n // First call on instanciate\n if (alignOptions) {\n this.alignOptions = alignOptions;\n this.alignByTranslate = alignByTranslate;\n if (!box || isString(box)) {\n this.alignTo = alignTo = box || 'renderer';\n // prevent duplicates, like legendGroup after resize\n erase(alignedObjects, this);\n alignedObjects.push(this);\n box = void 0; // reassign it below\n }\n // When called on resize, no arguments are supplied\n }\n else {\n alignOptions = this.alignOptions;\n alignByTranslate = this.alignByTranslate;\n alignTo = this.alignTo;\n }\n box = pick(box, renderer[alignTo], alignTo === 'scrollablePlotBox' ?\n renderer.plotBox : void 0, renderer);\n // Assign variables\n const align = alignOptions.align, vAlign = alignOptions.verticalAlign;\n // default: left align\n x = (box.x || 0) + (alignOptions.x || 0);\n // default: top align\n y = (box.y || 0) + (alignOptions.y || 0);\n // Align\n if (align === 'right') {\n alignFactor = 1;\n }\n else if (align === 'center') {\n alignFactor = 2;\n }\n if (alignFactor) {\n x += (box.width - (alignOptions.width || 0)) /\n alignFactor;\n }\n attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);\n // Vertical align\n if (vAlign === 'bottom') {\n vAlignFactor = 1;\n }\n else if (vAlign === 'middle') {\n vAlignFactor = 2;\n }\n if (vAlignFactor) {\n y += (box.height - (alignOptions.height || 0)) /\n vAlignFactor;\n }\n attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);\n // Animate only if already placed\n this[this.placed ? 'animate' : 'attr'](attribs);\n this.placed = true;\n this.alignAttr = attribs;\n return this;\n }\n /**\n * @private\n * @function Highcharts.SVGElement#alignSetter\n * @param {\"left\"|\"center\"|\"right\"} value\n */\n alignSetter(value) {\n const convert = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n if (convert[value]) {\n this.alignValue = value;\n this.element.setAttribute('text-anchor', convert[value]);\n }\n }\n /**\n * Animate to given attributes or CSS properties.\n *\n * @sample highcharts/members/element-on/\n * Setting some attributes by animation\n *\n * @function Highcharts.SVGElement#animate\n *\n * @param {Highcharts.SVGAttributes} params\n * SVG attributes or CSS to animate.\n *\n * @param {boolean|Partial} [options]\n * Animation options.\n *\n * @param {Function} [complete]\n * Function to perform at the end of animation.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n animate(params, options, complete) {\n const animOptions = animObject(pick(options, this.renderer.globalAnimation, true)), deferTime = animOptions.defer;\n // When the page is hidden save resources in the background by not\n // running animation at all (#9749).\n if (doc.hidden) {\n animOptions.duration = 0;\n }\n if (animOptions.duration !== 0) {\n // allows using a callback with the global animation without\n // overwriting it\n if (complete) {\n animOptions.complete = complete;\n }\n // If defer option is defined delay the animation #12901\n syncTimeout(() => {\n if (this.element) {\n animate(this, params, animOptions);\n }\n }, deferTime);\n }\n else {\n this.attr(params, void 0, complete || animOptions.complete);\n // Call the end step synchronously\n objectEach(params, function (val, prop) {\n if (animOptions.step) {\n animOptions.step.call(this, val, { prop: prop, pos: 1, elem: this });\n }\n }, this);\n }\n return this;\n }\n /**\n * Apply a text outline through a custom CSS property, by copying the text\n * element and apply stroke to the copy. Used internally. Contrast checks at\n * [example](https://jsfiddle.net/highcharts/43soe9m1/2/).\n *\n * @example\n * // Specific color\n * text.css({\n * textOutline: '1px black'\n * });\n * // Automatic contrast\n * text.css({\n * color: '#000000', // black text\n * textOutline: '1px contrast' // => white outline\n * });\n *\n * @private\n * @function Highcharts.SVGElement#applyTextOutline\n *\n * @param {string} textOutline\n * A custom CSS `text-outline` setting, defined by `width color`.\n */\n applyTextOutline(textOutline) {\n const elem = this.element, hasContrast = textOutline.indexOf('contrast') !== -1, styles = {};\n // When the text shadow is set to contrast, use dark stroke for light\n // text and vice versa.\n if (hasContrast) {\n styles.textOutline = textOutline = textOutline.replace(/contrast/g, this.renderer.getContrast(elem.style.fill));\n }\n // Extract the stroke width and color\n const parts = textOutline.split(' ');\n const color = parts[parts.length - 1];\n let strokeWidth = parts[0];\n if (strokeWidth && strokeWidth !== 'none' && H.svg) {\n this.fakeTS = true; // Fake text shadow\n // Since the stroke is applied on center of the actual outline, we\n // need to double it to get the correct stroke-width outside the\n // glyphs.\n strokeWidth = strokeWidth.replace(/(^[\\d\\.]+)(.*?)$/g, function (match, digit, unit) {\n return (2 * Number(digit)) + unit;\n });\n // Remove shadows from previous runs.\n this.removeTextOutline();\n const outline = doc.createElementNS(SVG_NS, 'tspan');\n attr(outline, {\n 'class': 'highcharts-text-outline',\n fill: color,\n stroke: color,\n 'stroke-width': strokeWidth,\n 'stroke-linejoin': 'round'\n });\n // For each of the tspans and text nodes, create a copy in the\n // outline.\n const parentElem = elem.querySelector('textPath') || elem;\n [].forEach.call(parentElem.childNodes, (childNode) => {\n const clone = childNode.cloneNode(true);\n if (clone.removeAttribute) {\n ['fill', 'stroke', 'stroke-width', 'stroke'].forEach((prop) => clone\n .removeAttribute(prop));\n }\n outline.appendChild(clone);\n });\n // Collect the sum of dy from all children, included nested ones\n let totalHeight = 0;\n [].forEach.call(parentElem.querySelectorAll('text tspan'), (element) => {\n totalHeight += Number(element.getAttribute('dy'));\n });\n // Insert an absolutely positioned break before the original text\n // to keep it in place\n const br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B';\n // Reset the position for the following text\n attr(br, {\n x: Number(elem.getAttribute('x')),\n dy: -totalHeight\n });\n // Insert the outline\n outline.appendChild(br);\n parentElem.insertBefore(outline, parentElem.firstChild);\n }\n }\n /**\n * @function Highcharts.SVGElement#attr\n * @param {string} key\n * @return {number|string}\n */ /**\n * Apply native and custom attributes to the SVG elements.\n *\n * In order to set the rotation center for rotation, set x and y to 0 and\n * use `translateX` and `translateY` attributes to position the element\n * instead.\n *\n * Attributes frequently used in Highcharts are `fill`, `stroke`,\n * `stroke-width`.\n *\n * @sample highcharts/members/renderer-rect/\n * Setting some attributes\n *\n * @example\n * // Set multiple attributes\n * element.attr({\n * stroke: 'red',\n * fill: 'blue',\n * x: 10,\n * y: 10\n * });\n *\n * // Set a single attribute\n * element.attr('stroke', 'red');\n *\n * // Get an attribute\n * element.attr('stroke'); // => 'red'\n *\n * @function Highcharts.SVGElement#attr\n *\n * @param {string|Highcharts.SVGAttributes} [hash]\n * The native and custom SVG attributes.\n *\n * @param {number|string|Highcharts.SVGPathArray} [val]\n * If the type of the first argument is `string`, the second can be a\n * value, which will serve as a single attribute setter. If the first\n * argument is a string and the second is undefined, the function\n * serves as a getter and the current value of the property is\n * returned.\n *\n * @param {Function} [complete]\n * A callback function to execute after setting the attributes. This\n * makes the function compliant and interchangeable with the\n * {@link SVGElement#animate} function.\n *\n * @param {boolean} [continueAnimation=true]\n * Used internally when `.attr` is called as part of an animation\n * step. Otherwise, calling `.attr` for an attribute will stop\n * animation for that attribute.\n *\n * @return {Highcharts.SVGElement}\n * If used as a setter, it returns the current\n * {@link Highcharts.SVGElement} so the calls can be chained. If\n * used as a getter, the current value of the attribute is returned.\n */\n attr(hash, val, complete, continueAnimation) {\n const element = this.element, symbolCustomAttribs = SVGElement.symbolCustomAttribs;\n let key, hasSetSymbolSize, ret = this, skipAttr, setter;\n // single key-value pair\n if (typeof hash === 'string' && typeof val !== 'undefined') {\n key = hash;\n hash = {};\n hash[key] = val;\n }\n // used as a getter: first argument is a string, second is undefined\n if (typeof hash === 'string') {\n ret = (this[hash + 'Getter'] ||\n this._defaultGetter).call(this, hash, element);\n // setter\n }\n else {\n objectEach(hash, function eachAttribute(val, key) {\n skipAttr = false;\n // Unless .attr is from the animator update, stop current\n // running animation of this property\n if (!continueAnimation) {\n stop(this, key);\n }\n // Special handling of symbol attributes\n if (this.symbolName &&\n symbolCustomAttribs.indexOf(key) !== -1) {\n if (!hasSetSymbolSize) {\n this.symbolAttr(hash);\n hasSetSymbolSize = true;\n }\n skipAttr = true;\n }\n if (this.rotation && (key === 'x' || key === 'y')) {\n this.doTransform = true;\n }\n if (!skipAttr) {\n setter = (this[key + 'Setter'] ||\n this._defaultSetter);\n setter.call(this, val, key, element);\n }\n }, this);\n this.afterSetters();\n }\n // In accordance with animate, run a complete callback\n if (complete) {\n complete.call(this);\n }\n return ret;\n }\n /**\n * Apply a clipping rectangle to this element.\n *\n * @function Highcharts.SVGElement#clip\n *\n * @param {Highcharts.ClipRectElement} [clipRect]\n * The clipping rectangle. If skipped, the current clip is removed.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVG element to allow chaining.\n */\n clip(clipRect) {\n return this.attr('clip-path', clipRect ?\n 'url(' + this.renderer.url + '#' + clipRect.id + ')' :\n 'none');\n }\n /**\n * Calculate the coordinates needed for drawing a rectangle crisply and\n * return the calculated attributes.\n *\n * @function Highcharts.SVGElement#crisp\n *\n * @param {Highcharts.RectangleObject} rect\n * Rectangle to crisp.\n *\n * @param {number} [strokeWidth]\n * The stroke width to consider when computing crisp positioning. It can\n * also be set directly on the rect parameter.\n *\n * @return {Highcharts.RectangleObject}\n * The modified rectangle arguments.\n */\n crisp(rect, strokeWidth) {\n const wrapper = this;\n strokeWidth = strokeWidth || rect.strokeWidth || 0;\n // Math.round because strokeWidth can sometimes have roundoff errors\n const normalizer = Math.round(strokeWidth) % 2 / 2;\n // normalize for crisp edges\n rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;\n rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;\n rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);\n rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);\n if (defined(rect.strokeWidth)) {\n rect.strokeWidth = strokeWidth;\n }\n return rect;\n }\n /**\n * Build and apply an SVG gradient out of a common JavaScript configuration\n * object. This function is called from the attribute setters. An event\n * hook is added for supporting other complex color types.\n *\n * @private\n * @function Highcharts.SVGElement#complexColor\n *\n * @param {Highcharts.GradientColorObject|Highcharts.PatternObject} colorOptions\n * The gradient or pattern options structure.\n *\n * @param {string} prop\n * The property to apply, can either be `fill` or `stroke`.\n *\n * @param {Highcharts.SVGDOMElement} elem\n * SVG element to apply the gradient on.\n */\n complexColor(colorOptions, prop, elem) {\n const renderer = this.renderer;\n let colorObject, gradName, gradAttr, radAttr, gradients, stops, stopColor, stopOpacity, radialReference, id, key = [], value;\n fireEvent(this.renderer, 'complexColor', {\n args: arguments\n }, function () {\n // Apply linear or radial gradients\n if (colorOptions.radialGradient) {\n gradName = 'radialGradient';\n }\n else if (colorOptions.linearGradient) {\n gradName = 'linearGradient';\n }\n if (gradName) {\n gradAttr = colorOptions[gradName];\n gradients = renderer.gradients;\n stops = colorOptions.stops;\n radialReference = elem.radialReference;\n // Keep < 2.2 kompatibility\n if (isArray(gradAttr)) {\n colorOptions[gradName] = gradAttr = {\n x1: gradAttr[0],\n y1: gradAttr[1],\n x2: gradAttr[2],\n y2: gradAttr[3],\n gradientUnits: 'userSpaceOnUse'\n };\n }\n // Correct the radial gradient for the radial reference system\n if (gradName === 'radialGradient' &&\n radialReference &&\n !defined(gradAttr.gradientUnits)) {\n // Save the radial attributes for updating\n radAttr = gradAttr;\n gradAttr = merge(gradAttr, renderer.getRadialAttr(radialReference, radAttr), { gradientUnits: 'userSpaceOnUse' });\n }\n // Build the unique key to detect whether we need to create a\n // new element (#1282)\n objectEach(gradAttr, function (value, n) {\n if (n !== 'id') {\n key.push(n, value);\n }\n });\n objectEach(stops, function (val) {\n key.push(val);\n });\n key = key.join(',');\n // Check if a gradient object with the same config object is\n // created within this renderer\n if (gradients[key]) {\n id = gradients[key].attr('id');\n }\n else {\n // Set the id and create the element\n gradAttr.id = id = uniqueKey();\n const gradientObject = gradients[key] =\n renderer.createElement(gradName)\n .attr(gradAttr)\n .add(renderer.defs);\n gradientObject.radAttr = radAttr;\n // The gradient needs to keep a list of stops to be able to\n // destroy them\n gradientObject.stops = [];\n stops.forEach(function (stop) {\n if (stop[1].indexOf('rgba') === 0) {\n colorObject = Color.parse(stop[1]);\n stopColor = colorObject.get('rgb');\n stopOpacity = colorObject.get('a');\n }\n else {\n stopColor = stop[1];\n stopOpacity = 1;\n }\n const stopObject = renderer.createElement('stop').attr({\n offset: stop[0],\n 'stop-color': stopColor,\n 'stop-opacity': stopOpacity\n }).add(gradientObject);\n // Add the stop element to the gradient\n gradientObject.stops.push(stopObject);\n });\n }\n // Set the reference to the gradient object\n value = 'url(' + renderer.url + '#' + id + ')';\n elem.setAttribute(prop, value);\n elem.gradient = key;\n // Allow the color to be concatenated into tooltips formatters\n // etc. (#2995)\n colorOptions.toString = function () {\n return value;\n };\n }\n });\n }\n /**\n * Set styles for the element. In addition to CSS styles supported by\n * native SVG and HTML elements, there are also some custom made for\n * Highcharts, like `width`, `ellipsis` and `textOverflow` for SVG text\n * elements.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Styled text\n *\n * @function Highcharts.SVGElement#css\n *\n * @param {Highcharts.CSSObject} styles\n * The new CSS styles.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chaining.\n */\n css(styles) {\n const oldStyles = this.styles, newStyles = {}, elem = this.element;\n let textWidth, hasNew = !oldStyles;\n // convert legacy\n if (styles.color) {\n styles.fill = styles.color;\n }\n // Filter out existing styles to increase performance (#2640)\n if (oldStyles) {\n objectEach(styles, function (value, n) {\n if (oldStyles && oldStyles[n] !== value) {\n newStyles[n] = value;\n hasNew = true;\n }\n });\n }\n if (hasNew) {\n // Merge the new styles with the old ones\n if (oldStyles) {\n styles = extend(oldStyles, newStyles);\n }\n // Get the text width from style\n // Previously set, unset it (#8234)\n if (styles.width === null || styles.width === 'auto') {\n delete this.textWidth;\n // Apply new\n }\n else if (elem.nodeName.toLowerCase() === 'text' &&\n styles.width) {\n textWidth = this.textWidth = pInt(styles.width);\n }\n // store object\n this.styles = styles;\n if (textWidth && (!svg && this.renderer.forExport)) {\n delete styles.width;\n }\n const stylesToApply = merge(styles);\n if (elem.namespaceURI === this.SVG_NS) {\n // These CSS properties are interpreted internally by the SVG\n // renderer, but are not supported by SVG and should not be\n // added to the DOM. In styled mode, no CSS should find its way\n // to the DOM whatsoever (#6173, #6474).\n ['textOutline', 'textOverflow', 'width'].forEach((key) => (stylesToApply &&\n delete stylesToApply[key]));\n }\n css(elem, stylesToApply);\n }\n if (this.added) {\n // Rebuild text after added. Cache mechanisms in the buildText will\n // prevent building if there are no significant changes.\n if (this.element.nodeName === 'text') {\n this.renderer.buildText(this);\n }\n // Apply text outline after added\n if (styles.textOutline) {\n this.applyTextOutline(styles.textOutline);\n }\n }\n return this;\n }\n /**\n * @private\n * @function Highcharts.SVGElement#dashstyleSetter\n * @param {string} value\n */\n dashstyleSetter(value) {\n let i, strokeWidth = this['stroke-width'];\n // If \"inherit\", like maps in IE, assume 1 (#4981). With HC5 and the new\n // strokeWidth function, we should be able to use that instead.\n if (strokeWidth === 'inherit') {\n strokeWidth = 1;\n }\n value = value && value.toLowerCase();\n if (value) {\n const v = value\n .replace('shortdashdotdot', '3,1,1,1,1,1,')\n .replace('shortdashdot', '3,1,1,1')\n .replace('shortdot', '1,1,')\n .replace('shortdash', '3,1,')\n .replace('longdash', '8,3,')\n .replace(/dot/g, '1,3,')\n .replace('dash', '4,3,')\n .replace(/,$/, '')\n .split(','); // ending comma\n i = v.length;\n while (i--) {\n v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));\n }\n value = v.join(',').replace(/NaN/g, 'none'); // #3226\n this.element.setAttribute('stroke-dasharray', value);\n }\n }\n /**\n * Destroy the element and element wrapper and clear up the DOM and event\n * hooks.\n *\n * @function Highcharts.SVGElement#destroy\n */\n destroy() {\n const wrapper = this, element = wrapper.element || {}, renderer = wrapper.renderer, ownerSVGElement = element.ownerSVGElement;\n let parentToClean = (element.nodeName === 'SPAN' &&\n wrapper.parentGroup ||\n void 0), grandParent, i;\n // remove events\n element.onclick = element.onmouseout = element.onmouseover =\n element.onmousemove = element.point = null;\n stop(wrapper); // stop running animations\n if (wrapper.clipPath && ownerSVGElement) {\n const clipPath = wrapper.clipPath;\n // Look for existing references to this clipPath and remove them\n // before destroying the element (#6196).\n // The upper case version is for Edge\n [].forEach.call(ownerSVGElement.querySelectorAll('[clip-path],[CLIP-PATH]'), function (el) {\n if (el.getAttribute('clip-path').indexOf(clipPath.element.id) > -1) {\n el.removeAttribute('clip-path');\n }\n });\n wrapper.clipPath = clipPath.destroy();\n }\n // Destroy stops in case this is a gradient object @todo old code?\n if (wrapper.stops) {\n for (i = 0; i < wrapper.stops.length; i++) {\n wrapper.stops[i].destroy();\n }\n wrapper.stops.length = 0;\n wrapper.stops = void 0;\n }\n // remove element\n wrapper.safeRemoveChild(element);\n // In case of useHTML, clean up empty containers emulating SVG groups\n // (#1960, #2393, #2697).\n while (parentToClean &&\n parentToClean.div &&\n parentToClean.div.childNodes.length === 0) {\n grandParent = parentToClean.parentGroup;\n wrapper.safeRemoveChild(parentToClean.div);\n delete parentToClean.div;\n parentToClean = grandParent;\n }\n // remove from alignObjects\n if (wrapper.alignTo) {\n erase(renderer.alignedObjects, wrapper);\n }\n objectEach(wrapper, function (val, key) {\n // Destroy child elements of a group\n if (wrapper[key] &&\n wrapper[key].parentGroup === wrapper &&\n wrapper[key].destroy) {\n wrapper[key].destroy();\n }\n // Delete all properties\n delete wrapper[key];\n });\n return;\n }\n /**\n * @private\n * @function Highcharts.SVGElement#dSettter\n * @param {number|string|Highcharts.SVGPathArray} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n dSetter(value, key, element) {\n if (isArray(value)) {\n // Backwards compatibility, convert one-dimensional array into an\n // array of segments\n if (typeof value[0] === 'string') {\n value = this.renderer.pathToSegments(value);\n }\n this.pathArray = value;\n value = value.reduce((acc, seg, i) => {\n if (!seg || !seg.join) {\n return (seg || '').toString();\n }\n return (i ? acc + ' ' : '') + seg.join(' ');\n }, '');\n }\n if (/(NaN| {2}|^$)/.test(value)) {\n value = 'M 0 0';\n }\n // Check for cache before resetting. Resetting causes disturbance in the\n // DOM, causing flickering in some cases in Edge/IE (#6747). Also\n // possible performance gain.\n if (this[key] !== value) {\n element.setAttribute(key, value);\n this[key] = value;\n }\n }\n /**\n * Fade out an element by animating its opacity down to 0, and hide it on\n * complete. Used internally for the tooltip.\n *\n * @function Highcharts.SVGElement#fadeOut\n *\n * @param {number} [duration=150]\n * The fade duration in milliseconds.\n */\n fadeOut(duration) {\n const elemWrapper = this;\n elemWrapper.animate({\n opacity: 0\n }, {\n duration: pick(duration, 150),\n complete: function () {\n // #3088, assuming we're only using this for tooltips\n elemWrapper.hide();\n }\n });\n }\n /**\n * @private\n * @function Highcharts.SVGElement#fillSetter\n * @param {Highcharts.ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n fillSetter(value, key, element) {\n if (typeof value === 'string') {\n element.setAttribute(key, value);\n }\n else if (value) {\n this.complexColor(value, key, element);\n }\n }\n /**\n * Get the bounding box (width, height, x and y) for the element. Generally\n * used to get rendered text size. Since this is called a lot in charts,\n * the results are cached based on text properties, in order to save DOM\n * traffic. The returned bounding box includes the rotation, so for example\n * a single text line of rotation 90 will report a greater height, and a\n * width corresponding to the line-height.\n *\n * @sample highcharts/members/renderer-on-chart/\n * Draw a rectangle based on a text's bounding box\n *\n * @function Highcharts.SVGElement#getBBox\n *\n * @param {boolean} [reload]\n * Skip the cache and get the updated DOM bouding box.\n *\n * @param {number} [rot]\n * Override the element's rotation. This is internally used on axis\n * labels with a value of 0 to find out what the bounding box would\n * be have been if it were not rotated.\n *\n * @return {Highcharts.BBoxObject}\n * The bounding box with `x`, `y`, `width` and `height` properties.\n */\n getBBox(reload, rot) {\n const wrapper = this, { alignValue, element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation = pick(rot, wrapper.rotation, 0), fontSize = renderer.styledMode ? (element &&\n SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles && styles.fontSize);\n let bBox, width, height, toggleTextShadowShim, cacheKey;\n // Avoid undefined and null (#7316)\n if (defined(textStr)) {\n cacheKey = textStr.toString();\n // Since numbers are monospaced, and numerical labels appear a lot\n // in a chart, we assume that a label of n characters has the same\n // bounding box as others of the same length. Unless there is inner\n // HTML in the label. In that case, leave the numbers as is (#5899).\n if (cacheKey.indexOf('<') === -1) {\n cacheKey = cacheKey.replace(/[0-9]/g, '0');\n }\n // Properties that affect bounding box\n cacheKey += [\n '',\n renderer.rootFontSize,\n fontSize,\n rotation,\n wrapper.textWidth,\n alignValue,\n styles && styles.textOverflow,\n styles && styles.fontWeight // #12163\n ].join(',');\n }\n if (cacheKey && !reload) {\n bBox = cache[cacheKey];\n }\n // No cache found\n if (!bBox) {\n // SVG elements\n if (isSVG || renderer.forExport) {\n try { // Fails in Firefox if the container has display: none.\n // When the text shadow shim is used, we need to hide the\n // fake shadows to get the correct bounding box (#3872)\n toggleTextShadowShim = this.fakeTS && function (display) {\n const outline = element.querySelector('.highcharts-text-outline');\n if (outline) {\n css(outline, { display });\n }\n };\n // Workaround for #3842, Firefox reporting wrong bounding\n // box for shadows\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('none');\n }\n bBox = element.getBBox ?\n // SVG: use extend because IE9 is not allowed to change\n // width and height in case of rotation (below)\n extend({}, element.getBBox()) : {\n // HTML elements with `exporting.allowHTML` and\n // legacy IE in export mode\n width: element.offsetWidth,\n height: element.offsetHeight,\n x: 0,\n y: 0\n };\n // #3842\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('');\n }\n }\n catch (e) {\n '';\n }\n // If the bBox is not set, the try-catch block above failed. The\n // other condition is for Opera that returns a width of\n // -Infinity on hidden elements.\n if (!bBox || bBox.width < 0) {\n bBox = { x: 0, y: 0, width: 0, height: 0 };\n }\n // useHTML within SVG\n }\n else {\n bBox = wrapper.htmlGetBBox();\n }\n // True SVG elements as well as HTML elements in modern browsers\n // using the .useHTML option need to compensated for rotation\n width = bBox.width;\n height = bBox.height;\n // Workaround for wrong bounding box in IE, Edge and Chrome on\n // Windows. With Highcharts' default font, IE and Edge report\n // a box height of 16.899 and Chrome rounds it to 17. If this\n // stands uncorrected, it results in more padding added below\n // the text than above when adding a label border or background.\n // Also vertical positioning is affected.\n // https://jsfiddle.net/highcharts/em37nvuj/\n // (#1101, #1505, #1669, #2568, #6213).\n if (isSVG) {\n bBox.height = height = ({\n '11px,17': 14,\n '13px,20': 16\n }[`${fontSize || ''},${Math.round(height)}`] ||\n height);\n }\n // Adjust for rotated text\n if (rotation) {\n const baseline = Number(element.getAttribute('y') || 0) - bBox.y, alignFactor = {\n 'right': 1,\n 'center': 0.5\n }[alignValue || 0] || 0, rad = rotation * deg2rad, rad90 = (rotation - 90) * deg2rad, wCosRad = width * Math.cos(rad), wSinRad = width * Math.sin(rad), cosRad90 = Math.cos(rad90), sinRad90 = Math.sin(rad90), \n // Find the starting point on the left side baseline of\n // the text\n pX = bBox.x + alignFactor * (width - wCosRad), pY = bBox.y + baseline - alignFactor * wSinRad, \n // Find all corners\n aX = pX + baseline * cosRad90, bX = aX + wCosRad, cX = bX - height * cosRad90, dX = cX - wCosRad, aY = pY + baseline * sinRad90, bY = aY + wSinRad, cY = bY - height * sinRad90, dY = cY - wSinRad;\n // Deduct the bounding box from the corners\n bBox.x = Math.min(aX, bX, cX, dX);\n bBox.y = Math.min(aY, bY, cY, dY);\n bBox.width = Math.max(aX, bX, cX, dX) - bBox.x;\n bBox.height = Math.max(aY, bY, cY, dY) - bBox.y;\n }\n }\n // Cache it. When loading a chart in a hidden iframe in Firefox and\n // IE/Edge, the bounding box height is 0, so don't cache it (#5620).\n if (cacheKey && (textStr === '' || bBox.height > 0)) {\n // Rotate (#4681)\n while (cacheKeys.length > 250) {\n delete cache[cacheKeys.shift()];\n }\n if (!cache[cacheKey]) {\n cacheKeys.push(cacheKey);\n }\n cache[cacheKey] = bBox;\n }\n return bBox;\n }\n /**\n * Get the computed style. Only in styled mode.\n *\n * @example\n * chart.series[0].points[0].graphic.getStyle('stroke-width'); // => '1px'\n *\n * @function Highcharts.SVGElement#getStyle\n *\n * @param {string} prop\n * The property name to check for.\n *\n * @return {string}\n * The current computed value.\n */\n getStyle(prop) {\n return win\n .getComputedStyle(this.element || this, '')\n .getPropertyValue(prop);\n }\n /**\n * Check if an element has the given class name.\n *\n * @function Highcharts.SVGElement#hasClass\n *\n * @param {string} className\n * The class name to check for.\n *\n * @return {boolean}\n * Whether the class name is found.\n */\n hasClass(className) {\n return ('' + this.attr('class'))\n .split(' ')\n .indexOf(className) !== -1;\n }\n /**\n * Hide the element, similar to setting the `visibility` attribute to\n * `hidden`.\n *\n * @function Highcharts.SVGElement#hide\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n hide() {\n return this.attr({ visibility: 'hidden' });\n }\n /**\n * @private\n */\n htmlGetBBox() {\n return { height: 0, width: 0, x: 0, y: 0 };\n }\n /**\n * Initialize the SVG element. This function only exists to make the\n * initialization process overridable. It should not be called directly.\n *\n * @function Highcharts.SVGElement#init\n *\n * @param {Highcharts.SVGRenderer} renderer\n * The SVGRenderer instance to initialize to.\n *\n * @param {string} nodeName\n * The SVG node name.\n */\n init(renderer, nodeName) {\n /**\n * The primary DOM node. Each `SVGElement` instance wraps a main DOM\n * node, but may also represent more nodes.\n *\n * @name Highcharts.SVGElement#element\n * @type {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n */\n this.element = nodeName === 'span' ?\n createElement(nodeName) :\n doc.createElementNS(this.SVG_NS, nodeName);\n /**\n * The renderer that the SVGElement belongs to.\n *\n * @name Highcharts.SVGElement#renderer\n * @type {Highcharts.SVGRenderer}\n */\n this.renderer = renderer;\n fireEvent(this, 'afterInit');\n }\n /**\n * Add an event listener. This is a simple setter that replaces the\n * previous event of the same type added by this function, as opposed to\n * the {@link Highcharts#addEvent} function.\n *\n * @sample highcharts/members/element-on/\n * A clickable rectangle\n *\n * @function Highcharts.SVGElement#on\n *\n * @param {string} eventType\n * The event type.\n *\n * @param {Function} handler\n * The handler callback.\n *\n * @return {Highcharts.SVGElement}\n * The SVGElement for chaining.\n */\n on(eventType, handler) {\n const { onEvents } = this;\n if (onEvents[eventType]) {\n // Unbind existing event\n onEvents[eventType]();\n }\n onEvents[eventType] = addEvent(this.element, eventType, handler);\n return this;\n }\n /**\n * @private\n * @function Highcharts.SVGElement#opacitySetter\n * @param {string} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n opacitySetter(value, key, element) {\n // Round off to avoid float errors, like tests where opacity lands on\n // 9.86957e-06 instead of 0\n const opacity = Number(Number(value).toFixed(3));\n this.opacity = opacity;\n element.setAttribute(key, opacity);\n }\n /**\n * Remove a class name from the element.\n *\n * @function Highcharts.SVGElement#removeClass\n *\n * @param {string|RegExp} className\n * The class name to remove.\n *\n * @return {Highcharts.SVGElement} Returns the SVG element for chainability.\n */\n removeClass(className) {\n return this.attr('class', ('' + this.attr('class'))\n .replace(isString(className) ?\n new RegExp(`(^| )${className}( |$)`) : // #12064, #13590\n className, ' ')\n .replace(/ +/g, ' ')\n .trim());\n }\n /**\n *\n * @private\n */\n removeTextOutline() {\n const outline = this.element\n .querySelector('tspan.highcharts-text-outline');\n if (outline) {\n this.safeRemoveChild(outline);\n }\n }\n /**\n * Removes an element from the DOM.\n *\n * @private\n * @function Highcharts.SVGElement#safeRemoveChild\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The DOM node to remove.\n */\n safeRemoveChild(element) {\n const parentNode = element.parentNode;\n if (parentNode) {\n parentNode.removeChild(element);\n }\n }\n /**\n * Set the coordinates needed to draw a consistent radial gradient across\n * a shape regardless of positioning inside the chart. Used on pie slices\n * to make all the slices have the same radial reference point.\n *\n * @function Highcharts.SVGElement#setRadialReference\n *\n * @param {Array} coordinates\n * The center reference. The format is `[centerX, centerY, diameter]` in\n * pixels.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n setRadialReference(coordinates) {\n const existingGradient = (this.element.gradient &&\n this.renderer.gradients[this.element.gradient]);\n this.element.radialReference = coordinates;\n // On redrawing objects with an existing gradient, the gradient needs\n // to be repositioned (#3801)\n if (existingGradient && existingGradient.radAttr) {\n existingGradient.animate(this.renderer.getRadialAttr(coordinates, existingGradient.radAttr));\n }\n return this;\n }\n /**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n * Path to follow. If undefined, it allows changing options for the\n * existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n * Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n setTextPath(path, textPathOptions) {\n // Defaults\n textPathOptions = merge(true, {\n enabled: true,\n attributes: {\n dy: -5,\n startOffset: '50%',\n textAnchor: 'middle'\n }\n }, textPathOptions);\n const url = this.renderer.url, textWrapper = this.text || this, textPath = textWrapper.textPath, { attributes, enabled } = textPathOptions;\n path = path || (textPath && textPath.path);\n // Remove previously added event\n if (textPath) {\n textPath.undo();\n }\n if (path && enabled) {\n const undo = addEvent(textWrapper, 'afterModifyTree', (e) => {\n if (path && enabled) {\n // Set ID for the path\n let textPathId = path.attr('id');\n if (!textPathId) {\n path.attr('id', textPathId = uniqueKey());\n }\n // Set attributes for the \n const textAttribs = {\n // dx/dy options must by set on (parent), the\n // rest should be set on \n x: 0,\n y: 0\n };\n if (defined(attributes.dx)) {\n textAttribs.dx = attributes.dx;\n delete attributes.dx;\n }\n if (defined(attributes.dy)) {\n textAttribs.dy = attributes.dy;\n delete attributes.dy;\n }\n textWrapper.attr(textAttribs);\n // Handle label properties\n this.attr({ transform: '' });\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Wrap the nodes in a textPath\n const children = e.nodes.slice(0);\n e.nodes.length = 0;\n e.nodes[0] = {\n tagName: 'textPath',\n attributes: extend(attributes, {\n 'text-anchor': attributes.textAnchor,\n href: `${url}#${textPathId}`\n }),\n children\n };\n }\n });\n // Set the reference\n textWrapper.textPath = { path, undo };\n }\n else {\n textWrapper.attr({ dx: 0, dy: 0 });\n delete textWrapper.textPath;\n }\n if (this.added) {\n // Rebuild text after added\n textWrapper.textCache = '';\n this.renderer.buildText(textWrapper);\n }\n return this;\n }\n /**\n * Add a shadow to the element. In styled mode, this method is not used,\n * instead use `defs` and filters.\n *\n * @example\n * renderer.rect(10, 100, 100, 100)\n * .attr({ fill: 'red' })\n * .shadow(true);\n *\n * @function Highcharts.SVGElement#shadow\n *\n * @param {boolean|Highcharts.ShadowOptionsObject} [shadowOptions] The\n * shadow options. If `true`, the default options are applied. If\n * `false`, the current shadow will be removed.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n shadow(shadowOptions) {\n var _a;\n const { renderer } = this, options = merge(((_a = this.parentGroup) === null || _a === void 0 ? void 0 : _a.rotation) === 90 ? {\n offsetX: -1,\n offsetY: -1\n } : {}, isObject(shadowOptions) ? shadowOptions : {}), id = renderer.shadowDefinition(options);\n return this.attr({\n filter: shadowOptions ?\n `url(${renderer.url}#${id})` :\n 'none'\n });\n }\n /**\n * Show the element after it has been hidden.\n *\n * @function Highcharts.SVGElement#show\n *\n * @param {boolean} [inherit=true]\n * Set the visibility attribute to `inherit` rather than `visible`.\n * The difference is that an element with `visibility=\"visible\"`\n * will be visible even if the parent is hidden.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n show(inherit = true) {\n return this.attr({ visibility: inherit ? 'inherit' : 'visible' });\n }\n /**\n * Set the stroke-width and record it on the SVGElement\n *\n * @private\n * @function Highcharts.SVGElement#strokeSetter\n * @param {number|string|ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n 'stroke-widthSetter'(value, key, element) {\n // Record it for quick access in getter\n this[key] = value;\n element.setAttribute(key, value);\n }\n /**\n * Get the computed stroke width in pixel values. This is used extensively\n * when drawing shapes to ensure the shapes are rendered crisp and\n * positioned correctly relative to each other. Using\n * `shape-rendering: crispEdges` leaves us less control over positioning,\n * for example when we want to stack columns next to each other, or position\n * things pixel-perfectly within the plot box.\n *\n * The common pattern when placing a shape is:\n * - Create the SVGElement and add it to the DOM. In styled mode, it will\n * now receive a stroke width from the style sheet. In classic mode we\n * will add the `stroke-width` attribute.\n * - Read the computed `elem.strokeWidth()`.\n * - Place it based on the stroke width.\n *\n * @function Highcharts.SVGElement#strokeWidth\n *\n * @return {number}\n * The stroke width in pixels. Even if the given stroke widtch (in CSS or by\n * attributes) is based on `em` or other units, the pixel size is returned.\n */\n strokeWidth() {\n // In non-styled mode, read the stroke width as set by .attr\n if (!this.renderer.styledMode) {\n return this['stroke-width'] || 0;\n }\n // In styled mode, read computed stroke width\n const val = this.getStyle('stroke-width');\n let ret = 0, dummy;\n // Read pixel values directly\n if (val.indexOf('px') === val.length - 2) {\n ret = pInt(val);\n // Other values like em, pt etc need to be measured\n }\n else if (val !== '') {\n dummy = doc.createElementNS(SVG_NS, 'rect');\n attr(dummy, {\n width: val,\n 'stroke-width': 0\n });\n this.element.parentNode.appendChild(dummy);\n ret = dummy.getBBox().width;\n dummy.parentNode.removeChild(dummy);\n }\n return ret;\n }\n /**\n * If one of the symbol size affecting parameters are changed,\n * check all the others only once for each call to an element's\n * .attr() method\n *\n * @private\n * @function Highcharts.SVGElement#symbolAttr\n *\n * @param {Highcharts.SVGAttributes} hash\n * The attributes to set.\n */\n symbolAttr(hash) {\n const wrapper = this;\n SVGElement.symbolCustomAttribs.forEach(function (key) {\n wrapper[key] = pick(hash[key], wrapper[key]);\n });\n wrapper.attr({\n d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)\n });\n }\n /**\n * @private\n * @function Highcharts.SVGElement#textSetter\n * @param {string} value\n */\n textSetter(value) {\n if (value !== this.textStr) {\n // Delete size caches when the text changes\n // delete this.bBox; // old code in series-label\n delete this.textPxLength;\n this.textStr = value;\n if (this.added) {\n this.renderer.buildText(this);\n }\n }\n }\n /**\n * @private\n * @function Highcharts.SVGElement#titleSetter\n * @param {string} value\n */\n titleSetter(value) {\n const el = this.element;\n const titleNode = el.getElementsByTagName('title')[0] ||\n doc.createElementNS(this.SVG_NS, 'title');\n // Move to first child\n if (el.insertBefore) {\n el.insertBefore(titleNode, el.firstChild);\n }\n else {\n el.appendChild(titleNode);\n }\n // Replace text content and escape markup\n titleNode.textContent =\n // #3276, #3895\n String(pick(value, ''))\n .replace(/<[^>]*>/g, '')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n /**\n * Bring the element to the front. Alternatively, a new zIndex can be set.\n *\n * @sample highcharts/members/element-tofront/\n * Click an element to bring it to front\n *\n * @function Highcharts.SVGElement#toFront\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n toFront() {\n const element = this.element;\n element.parentNode.appendChild(element);\n return this;\n }\n /**\n * Move an object and its children by x and y values.\n *\n * @function Highcharts.SVGElement#translate\n *\n * @param {number} x\n * The x value.\n *\n * @param {number} y\n * The y value.\n *\n * @return {Highcharts.SVGElement}\n * Translated element.\n */\n translate(x, y) {\n return this.attr({\n translateX: x,\n translateY: y\n });\n }\n /**\n * Update the transform attribute based on internal properties. Deals with\n * the custom `translateX`, `translateY`, `rotation`, `scaleX` and `scaleY`\n * attributes and updates the SVG `transform` attribute.\n *\n * @private\n * @function Highcharts.SVGElement#updateTransform\n */\n updateTransform() {\n const { element, matrix, rotation = 0, scaleX, scaleY, translateX = 0, translateY = 0 } = this;\n // Apply translate. Nearly all transformed elements have translation,\n // so instead of checking for translate = 0, do it always (#1767,\n // #1846).\n const transform = ['translate(' + translateX + ',' + translateY + ')'];\n // apply matrix\n if (defined(matrix)) {\n transform.push('matrix(' + matrix.join(',') + ')');\n }\n // Apply rotation\n if (rotation) { // text rotation or inverted chart\n transform.push('rotate(' + rotation + ' ' +\n pick(this.rotationOriginX, element.getAttribute('x'), 0) +\n ' ' +\n pick(this.rotationOriginY, element.getAttribute('y') || 0) + ')');\n }\n // apply scale\n if (defined(scaleX) || defined(scaleY)) {\n transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');\n }\n if (transform.length && !(this.text || this).textPath) {\n element.setAttribute('transform', transform.join(' '));\n }\n }\n /**\n * @private\n * @function Highcharts.SVGElement#visibilitySetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n visibilitySetter(value, key, element) {\n // IE9-11 doesn't handle visibilty:inherit well, so we remove the\n // attribute instead (#2881, #3909)\n if (value === 'inherit') {\n element.removeAttribute(key);\n }\n else if (this[key] !== value) { // #6747\n element.setAttribute(key, value);\n }\n this[key] = value;\n }\n /**\n * @private\n * @function Highcharts.SVGElement#xGetter\n */\n xGetter(key) {\n if (this.element.nodeName === 'circle') {\n if (key === 'x') {\n key = 'cx';\n }\n else if (key === 'y') {\n key = 'cy';\n }\n }\n return this._defaultGetter(key);\n }\n /**\n * @private\n * @function Highcharts.SVGElement#zIndexSetter\n */\n zIndexSetter(value, key) {\n const renderer = this.renderer, parentGroup = this.parentGroup, parentWrapper = parentGroup || renderer, parentNode = parentWrapper.element || renderer.box, element = this.element, svgParent = parentNode === renderer.box;\n let childNodes, otherElement, otherZIndex, inserted = false, undefinedOtherZIndex, run = this.added, i;\n if (defined(value)) {\n // So we can read it for other elements in the group\n element.setAttribute('data-z-index', value);\n value = +value;\n if (this[key] === value) {\n // Only update when needed (#3865)\n run = false;\n }\n }\n else if (defined(this[key])) {\n element.removeAttribute('data-z-index');\n }\n this[key] = value;\n // Insert according to this and other elements' zIndex. Before .add() is\n // called, nothing is done. Then on add, or by later calls to\n // zIndexSetter, the node is placed on the right place in the DOM.\n if (run) {\n value = this.zIndex;\n if (value && parentGroup) {\n parentGroup.handleZ = true;\n }\n childNodes = parentNode.childNodes;\n for (i = childNodes.length - 1; i >= 0 && !inserted; i--) {\n otherElement = childNodes[i];\n otherZIndex = otherElement.getAttribute('data-z-index');\n undefinedOtherZIndex = !defined(otherZIndex);\n if (otherElement !== element) {\n if (\n // Negative zIndex versus no zIndex:\n // On all levels except the highest. If the parent is\n // , then we don't want to put items before \n // or \n value < 0 &&\n undefinedOtherZIndex &&\n !svgParent &&\n !i) {\n parentNode.insertBefore(element, childNodes[i]);\n inserted = true;\n }\n else if (\n // Insert after the first element with a lower zIndex\n pInt(otherZIndex) <= value ||\n // If negative zIndex, add this before first undefined\n // zIndex element\n (undefinedOtherZIndex &&\n (!defined(value) || value >= 0))) {\n parentNode.insertBefore(element, childNodes[i + 1]);\n inserted = true;\n }\n }\n }\n if (!inserted) {\n parentNode.insertBefore(element, childNodes[svgParent ? 3 : 0]);\n inserted = true;\n }\n }\n return inserted;\n }\n }\n // Custom attributes used for symbols, these should be filtered out when\n // setting SVGElement attributes (#9375).\n SVGElement.symbolCustomAttribs = [\n 'anchorX',\n 'anchorY',\n 'clockwise',\n 'end',\n 'height',\n 'innerR',\n 'r',\n 'start',\n 'width',\n 'x',\n 'y'\n ];\n // Some shared setters and getters\n SVGElement.prototype.strokeSetter = SVGElement.prototype.fillSetter;\n SVGElement.prototype.yGetter = SVGElement.prototype.xGetter;\n SVGElement.prototype.matrixSetter =\n SVGElement.prototype.rotationOriginXSetter =\n SVGElement.prototype.rotationOriginYSetter =\n SVGElement.prototype.rotationSetter =\n SVGElement.prototype.scaleXSetter =\n SVGElement.prototype.scaleYSetter =\n SVGElement.prototype.translateXSetter =\n SVGElement.prototype.translateYSetter =\n SVGElement.prototype.verticalAlignSetter = function (value, key) {\n this[key] = value;\n this.doTransform = true;\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Reference to the global SVGElement class as a workaround for a name conflict\n * in the Highcharts namespace.\n *\n * @global\n * @typedef {global.SVGElement} GlobalSVGElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The horizontal alignment of an element.\n *\n * @typedef {\"center\"|\"left\"|\"right\"} Highcharts.AlignValue\n */\n /**\n * Options to align the element relative to the chart or another box.\n *\n * @interface Highcharts.AlignObject\n */ /**\n * Horizontal alignment. Can be one of `left`, `center` and `right`.\n *\n * @name Highcharts.AlignObject#align\n * @type {Highcharts.AlignValue|undefined}\n *\n * @default left\n */ /**\n * Vertical alignment. Can be one of `top`, `middle` and `bottom`.\n *\n * @name Highcharts.AlignObject#verticalAlign\n * @type {Highcharts.VerticalAlignValue|undefined}\n *\n * @default top\n */ /**\n * Horizontal pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#x\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Vertical pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#y\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Use the `transform` attribute with translateX and translateY custom\n * attributes to align this elements rather than `x` and `y` attributes.\n *\n * @name Highcharts.AlignObject#alignByTranslate\n * @type {boolean|undefined}\n *\n * @default false\n */\n /**\n * Bounding box of an element.\n *\n * @interface Highcharts.BBoxObject\n * @extends Highcharts.PositionObject\n */ /**\n * Height of the bounding box.\n *\n * @name Highcharts.BBoxObject#height\n * @type {number}\n */ /**\n * Width of the bounding box.\n *\n * @name Highcharts.BBoxObject#width\n * @type {number}\n */ /**\n * Horizontal position of the bounding box.\n *\n * @name Highcharts.BBoxObject#x\n * @type {number}\n */ /**\n * Vertical position of the bounding box.\n *\n * @name Highcharts.BBoxObject#y\n * @type {number}\n */\n /**\n * An object of key-value pairs for SVG attributes. Attributes in Highcharts\n * elements for the most parts correspond to SVG, but some are specific to\n * Highcharts, like `zIndex`, `rotation`, `rotationOriginX`,\n * `rotationOriginY`, `translateX`, `translateY`, `scaleX` and `scaleY`. SVG\n * attributes containing a hyphen are _not_ camel-cased, they should be\n * quoted to preserve the hyphen.\n *\n * @example\n * {\n * 'stroke': '#ff0000', // basic\n * 'stroke-width': 2, // hyphenated\n * 'rotation': 45 // custom\n * 'd': ['M', 10, 10, 'L', 30, 30, 'z'] // path definition, note format\n * }\n *\n * @interface Highcharts.SVGAttributes\n */ /**\n * @name Highcharts.SVGAttributes#[key:string]\n * @type {*}\n */ /**\n * @name Highcharts.SVGAttributes#d\n * @type {string|Highcharts.SVGPathArray|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dx\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dy\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#fill\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#matrix\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotation\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#stroke\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#style\n * @type {string|Highcharts.CSSObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#zIndex\n * @type {number|undefined}\n */\n /**\n * An SVG DOM element. The type is a reference to the regular SVGElement in the\n * global scope.\n *\n * @typedef {globals.GlobalSVGElement} Highcharts.SVGDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The vertical alignment of an element.\n *\n * @typedef {\"bottom\"|\"middle\"|\"top\"} Highcharts.VerticalAlignValue\n */\n ''; // keeps doclets above in JS file\n\n return SVGElement;\n });\n _registerModule(_modules, 'Core/Renderer/RendererRegistry.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var RendererRegistry;\n (function (RendererRegistry) {\n /* *\n *\n * Constants\n *\n * */\n RendererRegistry.rendererTypes = {};\n /* *\n *\n * Variables\n *\n * */\n let defaultRenderer;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Gets a registered renderer class. If no renderer type is provided or the\n * requested renderer was not founded, the default renderer is returned.\n *\n * @param {string} [rendererType]\n * Renderer type or the default renderer.\n *\n * @return {Highcharts.Class}\n * Returns the requested renderer class or the default renderer class.\n */\n function getRendererType(rendererType = defaultRenderer) {\n return (RendererRegistry.rendererTypes[rendererType] || RendererRegistry.rendererTypes[defaultRenderer]);\n }\n RendererRegistry.getRendererType = getRendererType;\n /**\n * Register a renderer class.\n *\n * @param {string} rendererType\n * Renderer type to register.\n *\n * @param {Highcharts.Class} rendererClass\n * Returns the requested renderer class or the default renderer class.\n *\n * @param {boolean} setAsDefault\n * Sets the renderer class as the default renderer.\n */\n function registerRendererType(rendererType, rendererClass, setAsDefault) {\n RendererRegistry.rendererTypes[rendererType] = rendererClass;\n if (!defaultRenderer || setAsDefault) {\n defaultRenderer = rendererType;\n H.Renderer = rendererClass; // compatibility\n }\n }\n RendererRegistry.registerRendererType = registerRendererType;\n })(RendererRegistry || (RendererRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererRegistry;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGLabel.js', [_modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { defined, extend, isNumber, merge, pick, removeEvent } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG label to render text.\n * @private\n * @class\n * @name Highcharts.SVGLabel\n * @augments Highcharts.SVGElement\n */\n class SVGLabel extends SVGElement {\n /* *\n *\n * Constructor\n *\n * */\n constructor(renderer, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n super();\n this.paddingLeftSetter = this.paddingSetter;\n this.paddingRightSetter = this.paddingSetter;\n this.init(renderer, 'g');\n this.textStr = str;\n this.x = x;\n this.y = y;\n this.anchorX = anchorX;\n this.anchorY = anchorY;\n this.baseline = baseline;\n this.className = className;\n this.addClass(className === 'button' ?\n 'highcharts-no-tooltip' :\n 'highcharts-label');\n if (className) {\n this.addClass('highcharts-' + className);\n }\n // Create the text element. An undefined text content prevents redundant\n // box calculation (#16121)\n this.text = renderer.text(void 0, 0, 0, useHTML).attr({ zIndex: 1 });\n // Validate the shape argument\n let hasBGImage;\n if (typeof shape === 'string') {\n hasBGImage = /^url\\((.*?)\\)$/.test(shape);\n if (hasBGImage || this.renderer.symbols[shape]) {\n this.symbolKey = shape;\n }\n }\n this.bBox = SVGLabel.emptyBBox;\n this.padding = 3;\n this.baselineOffset = 0;\n this.needsBox = renderer.styledMode || hasBGImage;\n this.deferredAttr = {};\n this.alignFactor = 0;\n }\n /* *\n *\n * Functions\n *\n * */\n alignSetter(value) {\n const alignFactor = ({\n left: 0,\n center: 0.5,\n right: 1\n })[value];\n if (alignFactor !== this.alignFactor) {\n this.alignFactor = alignFactor;\n // Bounding box exists, means we're dynamically changing\n if (this.bBox && isNumber(this.xSetting)) {\n this.attr({ x: this.xSetting }); // #5134\n }\n }\n }\n anchorXSetter(value, key) {\n this.anchorX = value;\n this.boxAttr(key, Math.round(value) - this.getCrispAdjust() - this.xSetting);\n }\n anchorYSetter(value, key) {\n this.anchorY = value;\n this.boxAttr(key, value - this.ySetting);\n }\n /*\n * Set a box attribute, or defer it if the box is not yet created\n */\n boxAttr(key, value) {\n if (this.box) {\n this.box.attr(key, value);\n }\n else {\n this.deferredAttr[key] = value;\n }\n }\n /*\n * Pick up some properties and apply them to the text instead of the\n * wrapper.\n */\n css(styles) {\n if (styles) {\n const textStyles = {};\n // Create a copy to avoid altering the original object\n // (#537)\n styles = merge(styles);\n SVGLabel.textProps.forEach((prop) => {\n if (typeof styles[prop] !== 'undefined') {\n textStyles[prop] = styles[prop];\n delete styles[prop];\n }\n });\n this.text.css(textStyles);\n // Update existing text, box (#9400, #12163, #18212)\n if ('fontSize' in textStyles || 'fontWeight' in textStyles) {\n this.updateTextPadding();\n }\n else if ('width' in textStyles || 'textOverflow' in textStyles) {\n this.updateBoxSize();\n }\n }\n return SVGElement.prototype.css.call(this, styles);\n }\n /*\n * Destroy and release memory.\n */\n destroy() {\n // Added by button implementation\n removeEvent(this.element, 'mouseenter');\n removeEvent(this.element, 'mouseleave');\n if (this.text) {\n this.text.destroy();\n }\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Call base implementation to destroy the rest\n SVGElement.prototype.destroy.call(this);\n return void 0;\n }\n fillSetter(value, key) {\n if (value) {\n this.needsBox = true;\n }\n // for animation getter (#6776)\n this.fill = value;\n this.boxAttr(key, value);\n }\n /*\n * Return the bounding box of the box, not the group.\n */\n getBBox() {\n // If we have a text string and the DOM bBox was 0, it typically means\n // that the label was first rendered hidden, so we need to update the\n // bBox (#15246)\n if (this.textStr && this.bBox.width === 0 && this.bBox.height === 0) {\n this.updateBoxSize();\n }\n const padding = this.padding;\n const paddingLeft = pick(this.paddingLeft, padding);\n return {\n width: this.width,\n height: this.height,\n x: this.bBox.x - paddingLeft,\n y: this.bBox.y - padding\n };\n }\n getCrispAdjust() {\n return this.renderer.styledMode && this.box ?\n this.box.strokeWidth() % 2 / 2 :\n (this['stroke-width'] ? parseInt(this['stroke-width'], 10) : 0) % 2 / 2;\n }\n heightSetter(value) {\n this.heightSetting = value;\n }\n /*\n * After the text element is added, get the desired size of the border\n * box and add it before the text in the DOM.\n */\n onAdd() {\n this.text.add(this);\n this.attr({\n // Alignment is available now (#3295, 0 not rendered if given\n // as a value)\n text: pick(this.textStr, ''),\n x: this.x || 0,\n y: this.y || 0\n });\n if (this.box && defined(this.anchorX)) {\n this.attr({\n anchorX: this.anchorX,\n anchorY: this.anchorY\n });\n }\n }\n paddingSetter(value, key) {\n if (!isNumber(value)) {\n this[key] = void 0;\n }\n else if (value !== this[key]) {\n this[key] = value;\n this.updateTextPadding();\n }\n }\n rSetter(value, key) {\n this.boxAttr(key, value);\n }\n strokeSetter(value, key) {\n // for animation getter (#6776)\n this.stroke = value;\n this.boxAttr(key, value);\n }\n 'stroke-widthSetter'(value, key) {\n if (value) {\n this.needsBox = true;\n }\n this['stroke-width'] = value;\n this.boxAttr(key, value);\n }\n 'text-alignSetter'(value) {\n this.textAlign = value;\n }\n textSetter(text) {\n if (typeof text !== 'undefined') {\n // Must use .attr to ensure transforms are done (#10009)\n this.text.attr({ text });\n }\n this.updateTextPadding();\n }\n /*\n * This function runs after the label is added to the DOM (when the bounding\n * box is available), and after the text of the label is updated to detect\n * the new bounding box and reflect it in the border box.\n */\n updateBoxSize() {\n const text = this.text, attribs = {}, padding = this.padding, \n // #12165 error when width is null (auto)\n // #12163 when fontweight: bold, recalculate bBox withot cache\n // #3295 && 3514 box failure when string equals 0\n bBox = this.bBox = (((!isNumber(this.widthSetting) ||\n !isNumber(this.heightSetting) ||\n this.textAlign) && defined(text.textStr)) ?\n text.getBBox() :\n SVGLabel.emptyBBox);\n let crispAdjust;\n this.width = this.getPaddedWidth();\n this.height = (this.heightSetting || bBox.height || 0) + 2 * padding;\n const metrics = this.renderer.fontMetrics(text);\n // Update the label-scoped y offset. Math.min because of inline\n // style (#9400)\n this.baselineOffset = padding + Math.min(\n // When applicable, use the font size of the first line (#15707)\n (this.text.firstLineMetrics || metrics).b, \n // When the height is 0, there is no bBox, so go with the font\n // metrics. Highmaps CSS demos.\n bBox.height || Infinity);\n // #15491: Vertical centering\n if (this.heightSetting) {\n this.baselineOffset += (this.heightSetting - metrics.h) / 2;\n }\n if (this.needsBox && !text.textPath) {\n // Create the border box if it is not already present\n if (!this.box) {\n // Symbol definition exists (#5324)\n const box = this.box = this.symbolKey ?\n this.renderer.symbol(this.symbolKey) :\n this.renderer.rect();\n box.addClass(// Don't use label className for buttons\n (this.className === 'button' ?\n '' : 'highcharts-label-box') +\n (this.className ?\n ' highcharts-' + this.className + '-box' : ''));\n box.add(this);\n }\n crispAdjust = this.getCrispAdjust();\n attribs.x = crispAdjust;\n attribs.y = ((this.baseline ? -this.baselineOffset : 0) + crispAdjust);\n // Apply the box attributes\n attribs.width = Math.round(this.width);\n attribs.height = Math.round(this.height);\n this.box.attr(extend(attribs, this.deferredAttr));\n this.deferredAttr = {};\n }\n }\n /*\n * This function runs after setting text or padding, but only if padding\n * is changed.\n */\n updateTextPadding() {\n const text = this.text;\n if (!text.textPath) {\n this.updateBoxSize();\n // Determine y based on the baseline\n const textY = this.baseline ? 0 : this.baselineOffset;\n let textX = pick(this.paddingLeft, this.padding);\n // compensate for alignment\n if (defined(this.widthSetting) &&\n this.bBox &&\n (this.textAlign === 'center' || this.textAlign === 'right')) {\n textX += { center: 0.5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width);\n }\n // update if anything changed\n if (textX !== text.x || textY !== text.y) {\n text.attr('x', textX);\n // #8159 - prevent misplaced data labels in treemap\n // (useHTML: true)\n if (text.hasBoxWidthChanged) {\n this.bBox = text.getBBox(true);\n }\n if (typeof textY !== 'undefined') {\n text.attr('y', textY);\n }\n }\n // record current values\n text.x = textX;\n text.y = textY;\n }\n }\n widthSetter(value) {\n // width:auto => null\n this.widthSetting = isNumber(value) ? value : void 0;\n }\n getPaddedWidth() {\n const padding = this.padding;\n const paddingLeft = pick(this.paddingLeft, padding);\n const paddingRight = pick(this.paddingRight, padding);\n return ((this.widthSetting || this.bBox.width || 0) +\n paddingLeft +\n paddingRight);\n }\n xSetter(value) {\n this.x = value; // for animation getter\n if (this.alignFactor) {\n value -= this.alignFactor * this.getPaddedWidth();\n // Force animation even when setting to the same value (#7898)\n this['forceAnimate:x'] = true;\n }\n this.xSetting = Math.round(value);\n this.attr('translateX', this.xSetting);\n }\n ySetter(value) {\n this.ySetting = this.y = Math.round(value);\n this.attr('translateY', this.ySetting);\n }\n }\n /* *\n *\n * Static Properties\n *\n * */\n SVGLabel.emptyBBox = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n /**\n * For labels, these CSS properties are applied to the `text` node directly.\n *\n * @private\n * @name Highcharts.SVGLabel#textProps\n * @type {Array}\n */\n SVGLabel.textProps = [\n 'color', 'direction', 'fontFamily', 'fontSize', 'fontStyle',\n 'fontWeight', 'lineHeight', 'textAlign', 'textDecoration',\n 'textOutline', 'textOverflow', 'whiteSpace', 'width'\n ];\n /* *\n *\n * Default Export\n *\n * */\n\n return SVGLabel;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/Symbols.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { defined, isNumber, pick } = U;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable require-jsdoc, valid-jsdoc */\n function arc(cx, cy, w, h, options) {\n const arc = [];\n if (options) {\n const start = options.start || 0, rx = pick(options.r, w), ry = pick(options.r, h || w), proximity = 0.001, fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n proximity), \n // Substract a small number to prevent cos and sin of start\n // and end from becoming equal on 360 arcs (related: #1561)\n end = (options.end || 0) - proximity, innerRadius = options.innerR, open = pick(options.open, fullCircle), cosStart = Math.cos(start), sinStart = Math.sin(start), cosEnd = Math.cos(end), sinEnd = Math.sin(end), \n // Proximity takes care of rounding errors around PI (#6971)\n longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);\n let arcSegment = [\n 'A',\n rx,\n ry,\n 0,\n longArc,\n pick(options.clockwise, 1),\n cx + rx * cosEnd,\n cy + ry * sinEnd\n ];\n arcSegment.params = { start, end, cx, cy }; // Memo for border radius\n arc.push([\n 'M',\n cx + rx * cosStart,\n cy + ry * sinStart\n ], arcSegment);\n if (defined(innerRadius)) {\n arcSegment = [\n 'A',\n innerRadius,\n innerRadius,\n 0,\n longArc,\n // Clockwise - opposite to the outer arc clockwise\n defined(options.clockwise) ? 1 - options.clockwise : 0,\n cx + innerRadius * cosStart,\n cy + innerRadius * sinStart\n ];\n // Memo for border radius\n arcSegment.params = {\n start: end,\n end: start,\n cx,\n cy\n };\n arc.push(open ?\n [\n 'M',\n cx + innerRadius * cosEnd,\n cy + innerRadius * sinEnd\n ] : [\n 'L',\n cx + innerRadius * cosEnd,\n cy + innerRadius * sinEnd\n ], arcSegment);\n }\n if (!open) {\n arc.push(['Z']);\n }\n }\n return arc;\n }\n /**\n * Callout shape used for default tooltips.\n */\n function callout(x, y, w, h, options) {\n const arrowLength = 6, halfDistance = 6, r = Math.min((options && options.r) || 0, w, h), safeDistance = r + halfDistance, anchorX = options && options.anchorX, anchorY = options && options.anchorY || 0;\n const path = roundedRect(x, y, w, h, { r });\n if (!isNumber(anchorX)) {\n return path;\n }\n // Anchor on right side\n if (x + anchorX >= w) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n // Simple connector\n }\n else {\n path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n }\n // Anchor on left side\n }\n else if (x + anchorX <= 0) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n // Simple connector\n }\n else {\n path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n }\n }\n else if ( // replace bottom\n anchorY &&\n anchorY > h &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n }\n else if ( // replace top\n anchorY &&\n anchorY < 0 &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n }\n return path;\n }\n function circle(x, y, w, h) {\n // Return a full arc\n return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n start: Math.PI * 0.5,\n end: Math.PI * 2.5,\n open: false\n });\n }\n function diamond(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h / 2],\n ['L', x + w / 2, y + h],\n ['L', x, y + h / 2],\n ['Z']\n ];\n }\n // #15291\n function rect(x, y, w, h, options) {\n if (options && options.r) {\n return roundedRect(x, y, w, h, options);\n }\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function roundedRect(x, y, w, h, options) {\n const r = (options === null || options === void 0 ? void 0 : options.r) || 0;\n return [\n ['M', x + r, y],\n ['L', x + w - r, y],\n ['A', r, r, 0, 0, 1, x + w, y + r],\n ['L', x + w, y + h - r],\n ['A', r, r, 0, 0, 1, x + w - r, y + h],\n ['L', x + r, y + h],\n ['A', r, r, 0, 0, 1, x, y + h - r],\n ['L', x, y + r],\n ['A', r, r, 0, 0, 1, x + r, y],\n ['Z'] // top-left corner\n ];\n }\n function triangle(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function triangleDown(x, y, w, h) {\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w / 2, y + h],\n ['Z']\n ];\n }\n const Symbols = {\n arc,\n callout,\n circle,\n diamond,\n rect,\n roundedRect,\n square: rect,\n triangle,\n 'triangle-down': triangleDown\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return Symbols;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/TextBuilder.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (AST, H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { doc, SVG_NS, win } = H;\n const { attr, extend, fireEvent, isString, objectEach, pick } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG Text Builder\n * @private\n * @class\n * @name Highcharts.TextBuilder\n */\n class TextBuilder {\n constructor(svgElement) {\n const textStyles = svgElement.styles;\n this.renderer = svgElement.renderer;\n this.svgElement = svgElement;\n this.width = svgElement.textWidth;\n this.textLineHeight = textStyles && textStyles.lineHeight;\n this.textOutline = textStyles && textStyles.textOutline;\n this.ellipsis = Boolean(textStyles && textStyles.textOverflow === 'ellipsis');\n this.noWrap = Boolean(textStyles && textStyles.whiteSpace === 'nowrap');\n }\n /**\n * Build an SVG representation of the pseudo HTML given in the object's\n * svgElement.\n *\n * @private\n *\n * @return {void}.\n */\n buildSVG() {\n const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = pick(wrapper.textStr, '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = !wrapper.added && renderer.box, regexMatchBreaks = //g, \n // The buildText code is quite heavy, so if we're not changing\n // something that affects the text, skip it (#6113).\n textCache = [\n textStr,\n this.ellipsis,\n this.noWrap,\n this.textLineHeight,\n this.textOutline,\n wrapper.getStyle('font-size'),\n this.width\n ].join(',');\n if (textCache === wrapper.textCache) {\n return;\n }\n wrapper.textCache = textCache;\n delete wrapper.actualWidth;\n // Remove old text\n for (let i = childNodes.length; i--;) {\n textNode.removeChild(childNodes[i]);\n }\n // Simple strings, add text directly and return\n if (!hasMarkup &&\n !this.ellipsis &&\n !this.width &&\n !wrapper.textPath &&\n (textStr.indexOf(' ') === -1 ||\n (this.noWrap && !regexMatchBreaks.test(textStr)))) {\n textNode.appendChild(doc.createTextNode(this.unescapeEntities(textStr)));\n // Complex strings, add more logic\n }\n else if (textStr !== '') {\n if (tempParent) {\n // attach it to the DOM to read offset width and font size\n tempParent.appendChild(textNode);\n }\n // Step 1. Parse the markup safely and directly into a tree\n // structure.\n const ast = new AST(textStr);\n // Step 2. Do as many as we can of the modifications to the tree\n // structure before it is added to the DOM\n this.modifyTree(ast.nodes);\n ast.addToDOM(textNode);\n // Step 3. Some modifications can't be done until the structure is\n // in the DOM, because we need to read computed metrics.\n this.modifyDOM();\n // Add title if an ellipsis was added\n if (this.ellipsis &&\n (textNode.textContent || '').indexOf('\\u2026') !== -1) {\n wrapper.attr('title', this.unescapeEntities(wrapper.textStr || '', ['<', '>']) // #7179\n );\n }\n if (tempParent) {\n tempParent.removeChild(textNode);\n }\n }\n // Apply the text outline\n if (isString(this.textOutline) && wrapper.applyTextOutline) {\n wrapper.applyTextOutline(this.textOutline);\n }\n }\n /**\n * Modify the DOM of the generated SVG structure. This function only does\n * operations that cannot be done until the elements are attached to the\n * DOM, like doing layout based on rendered metrics of the added elements.\n *\n * @private\n *\n */\n modifyDOM() {\n const wrapper = this.svgElement;\n const x = attr(wrapper.element, 'x');\n wrapper.firstLineMetrics = void 0;\n // Remove empty tspans (including breaks) from the beginning because\n // SVG's getBBox doesn't count empty lines. The use case is tooltip\n // where the header is empty. By doing this in the DOM rather than in\n // the AST, we can inspect the textContent directly and don't have to\n // recurse down to look for valid content.\n let firstChild;\n while ((firstChild = wrapper.element.firstChild)) {\n if (/^[\\s\\u200B]*$/.test(firstChild.textContent || ' ')) {\n wrapper.element.removeChild(firstChild);\n }\n else {\n break;\n }\n }\n // Modify hard line breaks by applying the rendered line height\n [].forEach.call(wrapper.element.querySelectorAll('tspan.highcharts-br'), (br, i) => {\n if (br.nextSibling && br.previousSibling) { // #5261\n if (i === 0 && br.previousSibling.nodeType === 1) {\n wrapper.firstLineMetrics = wrapper.renderer\n .fontMetrics(br.previousSibling);\n }\n attr(br, {\n // Since the break is inserted in front of the next\n // line, we need to use the next sibling for the line\n // height\n dy: this.getLineHeight(br.nextSibling),\n x\n });\n }\n });\n // Constrain the line width, either by ellipsis or wrapping\n const width = this.width || 0;\n if (!width) {\n return;\n }\n // Insert soft line breaks into each text node\n const modifyTextNode = (textNode, parentElement) => {\n const text = textNode.textContent || '';\n const words = text\n .replace(/([^\\^])-/g, '$1- ') // Split on hyphens\n // .trim()\n .split(' '); // #1273\n const hasWhiteSpace = !this.noWrap && (words.length > 1 || wrapper.element.childNodes.length > 1);\n const dy = this.getLineHeight(parentElement);\n let lineNo = 0;\n let startAt = wrapper.actualWidth;\n if (this.ellipsis) {\n if (text) {\n this.truncate(textNode, text, void 0, 0, \n // Target width\n Math.max(0, \n // Substract the font face to make room for the\n // ellipsis itself\n width - 0.8 * dy), \n // Build the text to test for\n (text, currentIndex) => text.substring(0, currentIndex) + '\\u2026');\n }\n }\n else if (hasWhiteSpace) {\n const lines = [];\n // Remove preceding siblings in order to make the text length\n // calculation correct in the truncate function\n const precedingSiblings = [];\n while (parentElement.firstChild &&\n parentElement.firstChild !== textNode) {\n precedingSiblings.push(parentElement.firstChild);\n parentElement.removeChild(parentElement.firstChild);\n }\n while (words.length) {\n // Apply the previous line\n if (words.length && !this.noWrap && lineNo > 0) {\n lines.push(textNode.textContent || '');\n textNode.textContent = words.join(' ')\n .replace(/- /g, '-');\n }\n // For each line, truncate the remaining\n // words into the line length.\n this.truncate(textNode, void 0, words, lineNo === 0 ? (startAt || 0) : 0, width, \n // Build the text to test for\n (t, currentIndex) => words\n .slice(0, currentIndex)\n .join(' ')\n .replace(/- /g, '-'));\n startAt = wrapper.actualWidth;\n lineNo++;\n }\n // Reinsert the preceding child nodes\n precedingSiblings.forEach((childNode) => {\n parentElement.insertBefore(childNode, textNode);\n });\n // Insert the previous lines before the original text node\n lines.forEach((line) => {\n // Insert the line\n parentElement.insertBefore(doc.createTextNode(line), textNode);\n // Insert a break\n const br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B'; // zero-width space\n attr(br, { dy, x });\n parentElement.insertBefore(br, textNode);\n });\n }\n };\n // Recurse down the DOM tree and handle line breaks for each text node\n const modifyChildren = ((node) => {\n const childNodes = [].slice.call(node.childNodes);\n childNodes.forEach((childNode) => {\n if (childNode.nodeType === win.Node.TEXT_NODE) {\n modifyTextNode(childNode, node);\n }\n else {\n // Reset word-wrap width readings after hard breaks\n if (childNode.className.baseVal\n .indexOf('highcharts-br') !== -1) {\n wrapper.actualWidth = 0;\n }\n // Recurse down to child node\n modifyChildren(childNode);\n }\n });\n });\n modifyChildren(wrapper.element);\n }\n /**\n * Get the rendered line height of a , or pure text node.\n *\n * @param {DOMElementType|Text} node The node to check for\n *\n * @return {number} The rendered line height\n */\n getLineHeight(node) {\n // If the node is a text node, use its parent\n const element = (node.nodeType === win.Node.TEXT_NODE) ?\n node.parentElement :\n node;\n return this.textLineHeight ?\n parseInt(this.textLineHeight.toString(), 10) :\n this.renderer.fontMetrics(element || this.svgElement.element).h;\n }\n /**\n * Transform a pseudo HTML AST node tree into an SVG structure. We do as\n * much heavy lifting as we can here, before doing the final processing in\n * the modifyDOM function. The original data is mutated.\n *\n * @private\n *\n * @param {ASTNode[]} nodes The AST nodes\n *\n */\n modifyTree(nodes) {\n const modifyChild = (node, i) => {\n const { attributes = {}, children, style = {}, tagName } = node, styledMode = this.renderer.styledMode;\n // Apply styling to text tags\n if (tagName === 'b' || tagName === 'strong') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-strong';\n }\n else {\n style.fontWeight = 'bold';\n }\n }\n else if (tagName === 'i' || tagName === 'em') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-emphasized';\n }\n else {\n style.fontStyle = 'italic';\n }\n }\n // Modify styling\n if (style && style.color) {\n style.fill = style.color;\n }\n // Handle breaks\n if (tagName === 'br') {\n attributes['class'] = 'highcharts-br'; // eslint-disable-line dot-notation\n node.textContent = '\\u200B'; // zero-width space\n // Trim whitespace off the beginning of new lines\n const nextNode = nodes[i + 1];\n if (nextNode && nextNode.textContent) {\n nextNode.textContent =\n nextNode.textContent.replace(/^ +/gm, '');\n }\n // If an anchor has direct text node children, the text is unable to\n // wrap because there is no `getSubStringLength` function on the\n // element. Therefore we need to wrap the child text node or nodes\n // in a tspan. #16173.\n }\n else if (tagName === 'a' &&\n children &&\n children.some((child) => child.tagName === '#text')) {\n node.children = [{ children, tagName: 'tspan' }];\n }\n if (tagName !== '#text' && tagName !== 'a') {\n node.tagName = 'tspan';\n }\n extend(node, { attributes, style });\n // Recurse\n if (children) {\n children\n .filter((c) => c.tagName !== '#text')\n .forEach(modifyChild);\n }\n };\n nodes.forEach(modifyChild);\n fireEvent(this.svgElement, 'afterModifyTree', { nodes });\n }\n /*\n * Truncate the text node contents to a given length. Used when the css\n * width is set. If the `textOverflow` is `ellipsis`, the text is truncated\n * character by character to the given length. If not, the text is\n * word-wrapped line by line.\n */\n truncate(textNode, text, words, startAt, width, getString) {\n const svgElement = this.svgElement;\n const { renderer, rotation } = svgElement;\n // Cache the lengths to avoid checking the same twice\n const lengths = [];\n // Word wrap cannot be truncated to shorter than one word, ellipsis\n // text can be completely blank.\n let minIndex = words ? 1 : 0;\n let maxIndex = (text || words || '').length;\n let currentIndex = maxIndex;\n let str;\n let actualWidth;\n const getSubStringLength = function (charEnd, concatenatedEnd) {\n // charEnd is used when finding the character-by-character\n // break for ellipsis, concatenatedEnd is used for word-by-word\n // break for word wrapping.\n const end = concatenatedEnd || charEnd;\n const parentNode = textNode.parentNode;\n if (parentNode && typeof lengths[end] === 'undefined') {\n // Modern browsers\n if (parentNode.getSubStringLength) {\n // Fails with DOM exception on unit-tests/legend/members\n // of unknown reason. Desired width is 0, text content\n // is \"5\" and end is 1.\n try {\n lengths[end] = startAt +\n parentNode.getSubStringLength(0, words ? end + 1 : end);\n }\n catch (e) {\n '';\n }\n }\n }\n return lengths[end];\n };\n svgElement.rotation = 0; // discard rotation when computing box\n actualWidth = getSubStringLength(textNode.textContent.length);\n if (startAt + actualWidth > width) {\n // Do a binary search for the index where to truncate the text\n while (minIndex <= maxIndex) {\n currentIndex = Math.ceil((minIndex + maxIndex) / 2);\n // When checking words for word-wrap, we need to build the\n // string and measure the subStringLength at the concatenated\n // word length.\n if (words) {\n str = getString(words, currentIndex);\n }\n actualWidth = getSubStringLength(currentIndex, str && str.length - 1);\n if (minIndex === maxIndex) {\n // Complete\n minIndex = maxIndex + 1;\n }\n else if (actualWidth > width) {\n // Too large. Set max index to current.\n maxIndex = currentIndex - 1;\n }\n else {\n // Within width. Set min index to current.\n minIndex = currentIndex;\n }\n }\n // If max index was 0 it means the shortest possible text was also\n // too large. For ellipsis that means only the ellipsis, while for\n // word wrap it means the whole first word.\n if (maxIndex === 0) {\n // Remove ellipsis\n textNode.textContent = '';\n // If the new text length is one less than the original, we don't\n // need the ellipsis\n }\n else if (!(text && maxIndex === text.length - 1)) {\n textNode.textContent = str || getString(text || words, currentIndex);\n }\n }\n // When doing line wrapping, prepare for the next line by removing the\n // items from this line.\n if (words) {\n words.splice(0, currentIndex);\n }\n svgElement.actualWidth = actualWidth;\n svgElement.rotation = rotation; // Apply rotation again.\n }\n /*\n * Un-escape HTML entities based on the public `renderer.escapes` list\n *\n * @private\n *\n * @param {string} inputStr The string to unescape\n * @param {Array} [except] Exceptions\n *\n * @return {string} The processed string\n */\n unescapeEntities(inputStr, except) {\n objectEach(this.renderer.escapes, function (value, key) {\n if (!except || except.indexOf(value) === -1) {\n inputStr = inputStr.toString().replace(new RegExp(value, 'g'), key);\n }\n });\n return inputStr;\n }\n }\n\n return TextBuilder;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { charts, deg2rad, doc, isFirefox, isMS, isWebKit, noop, SVG_NS, symbolSizes, win } = H;\n const { addEvent, attr, createElement, css, defined, destroyObjectProperties, extend, isArray, isNumber, isObject, isString, merge, pick, pInt, uniqueKey } = U;\n /* *\n *\n * Variables\n *\n * */\n let hasInternalReferenceBug;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Allows direct access to the Highcharts rendering layer in order to draw\n * primitive shapes like circles, rectangles, paths or text directly on a chart,\n * or independent from any chart. The SVGRenderer represents a wrapper object\n * for SVG in modern browsers.\n *\n * An existing chart's renderer can be accessed through {@link Chart.renderer}.\n * The renderer can also be used completely decoupled from a chart.\n *\n * @sample highcharts/members/renderer-on-chart\n * Annotating a chart programmatically.\n * @sample highcharts/members/renderer-basic\n * Independent SVG drawing.\n *\n * @example\n * // Use directly without a chart object.\n * let renderer = new Highcharts.Renderer(parentNode, 600, 400);\n *\n * @class\n * @name Highcharts.SVGRenderer\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode.\n * If it does, it will avoid setting presentational attributes in\n * some cases, but not when set explicitly through `.attr` and `.css`\n * etc.\n */\n class SVGRenderer {\n /* *\n *\n * Constructors\n *\n * */\n constructor(container, width, height, style, forExport, allowHTML, styledMode) {\n /* *\n *\n * Properties\n *\n * */\n this.alignedObjects = void 0;\n /**\n * The root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#box\n * @type {Highcharts.SVGDOMElement}\n */\n this.box = void 0;\n /**\n * The wrapper for the root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#boxWrapper\n * @type {Highcharts.SVGElement}\n */\n this.boxWrapper = void 0;\n this.cache = void 0;\n this.cacheKeys = void 0;\n this.chartIndex = void 0;\n /**\n * A pointer to the `defs` node of the root SVG.\n *\n * @name Highcharts.SVGRenderer#defs\n * @type {Highcharts.SVGElement}\n */\n this.defs = void 0;\n this.globalAnimation = void 0;\n this.gradients = void 0;\n this.height = void 0;\n this.imgCount = void 0;\n this.style = void 0;\n /**\n * Page url used for internal references.\n *\n * @private\n * @name Highcharts.SVGRenderer#url\n * @type {string}\n */\n this.url = void 0;\n this.width = void 0;\n this.init(container, width, height, style, forExport, allowHTML, styledMode);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the SVGRenderer. Overridable initializer function that takes\n * the same parameters as the constructor.\n *\n * @function Highcharts.SVGRenderer#init\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode. If it\n * does, it will avoid setting presentational attributes in some cases, but\n * not when set explicitly through `.attr` and `.css` etc.\n */\n init(container, width, height, style, forExport, allowHTML, styledMode) {\n const renderer = this, boxWrapper = renderer\n .createElement('svg')\n .attr({\n version: '1.1',\n 'class': 'highcharts-root'\n }), element = boxWrapper.element;\n if (!styledMode) {\n boxWrapper.css(this.getStyle(style));\n }\n container.appendChild(element);\n // Always use ltr on the container, otherwise text-anchor will be\n // flipped and text appear outside labels, buttons, tooltip etc (#3482)\n attr(container, 'dir', 'ltr');\n // For browsers other than IE, add the namespace attribute (#1978)\n if (container.innerHTML.indexOf('xmlns') === -1) {\n attr(element, 'xmlns', this.SVG_NS);\n }\n this.box = element;\n this.boxWrapper = boxWrapper;\n renderer.alignedObjects = [];\n this.url = this.getReferenceURL();\n // Add description\n const desc = this.createElement('desc').add();\n desc.element.appendChild(doc.createTextNode('Created with Highcharts 11.0.1'));\n renderer.defs = this.createElement('defs').add();\n renderer.allowHTML = allowHTML;\n renderer.forExport = forExport;\n renderer.styledMode = styledMode;\n renderer.gradients = {}; // Object where gradient SvgElements are stored\n renderer.cache = {}; // Cache for numerical bounding boxes\n renderer.cacheKeys = [];\n renderer.imgCount = 0;\n renderer.rootFontSize = boxWrapper.getStyle('font-size');\n renderer.setSize(width, height, false);\n // Issue 110 workaround:\n // In Firefox, if a div is positioned by percentage, its pixel position\n // may land between pixels. The container itself doesn't display this,\n // but an SVG element inside this container will be drawn at subpixel\n // precision. In order to draw sharp lines, this must be compensated\n // for. This doesn't seem to work inside iframes though (like in\n // jsFiddle).\n let subPixelFix, rect;\n if (isFirefox && container.getBoundingClientRect) {\n subPixelFix = function () {\n css(container, { left: 0, top: 0 });\n rect = container.getBoundingClientRect();\n css(container, {\n left: (Math.ceil(rect.left) - rect.left) + 'px',\n top: (Math.ceil(rect.top) - rect.top) + 'px'\n });\n };\n // run the fix now\n subPixelFix();\n // run it on resize\n renderer.unSubPixelFix = addEvent(win, 'resize', subPixelFix);\n }\n }\n /**\n * General method for adding a definition to the SVG `defs` tag. Can be used\n * for gradients, fills, filters etc. Styled mode only. A hook for adding\n * general definitions to the SVG's defs tag. Definitions can be referenced\n * from the CSS by its `id`. Read more in\n * [gradients, shadows and patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n * Styled mode only.\n *\n * @function Highcharts.SVGRenderer#definition\n *\n * @param {Highcharts.ASTNode} def\n * A serialized form of an SVG definition, including children.\n *\n * @return {Highcharts.SVGElement}\n * The inserted node.\n */\n definition(def) {\n const ast = new AST([def]);\n return ast.addToDOM(this.defs.element);\n }\n /**\n * Get the prefix needed for internal URL references to work in certain\n * cases. Some older browser versions had a bug where internal url\n * references in SVG attributes, on the form `url(#some-id)`, would fail if\n * a base tag was present in the page. There were also issues with\n * `history.pushState` related to this prefix.\n *\n * Related issues: #24, #672, #1070, #5244.\n *\n * The affected browsers are:\n * - Chrome <= 53 (May 2018)\n * - Firefox <= 51 (January 2017)\n * - Safari/Mac <= 12.1 (2018 or 2019)\n * - Safari/iOS <= 13\n *\n * @todo Remove this hack when time has passed. All the affected browsers\n * are evergreens, so it is increasingly unlikely that users are affected by\n * the bug.\n *\n * @return {string}\n * The prefix to use. An empty string for modern browsers.\n */\n getReferenceURL() {\n if ((isFirefox || isWebKit) &&\n doc.getElementsByTagName('base').length) {\n // Detect if a clip path is taking effect by performing a hit test\n // outside the clipped area. If the hit element is the rectangle\n // that was supposed to be clipped, the bug is present. This only\n // has to be performed once per page load, so we store the result\n // locally in the module.\n if (!defined(hasInternalReferenceBug)) {\n const id = uniqueKey();\n const ast = new AST([{\n tagName: 'svg',\n attributes: {\n width: 8,\n height: 8\n },\n children: [{\n tagName: 'defs',\n children: [{\n tagName: 'clipPath',\n attributes: {\n id\n },\n children: [{\n tagName: 'rect',\n attributes: {\n width: 4,\n height: 4\n }\n }]\n }]\n }, {\n tagName: 'rect',\n attributes: {\n id: 'hitme',\n width: 8,\n height: 8,\n 'clip-path': `url(#${id})`,\n fill: 'rgba(0,0,0,0.001)'\n }\n }]\n }]);\n const svg = ast.addToDOM(doc.body);\n css(svg, {\n position: 'fixed',\n top: 0,\n left: 0,\n zIndex: 9e5\n });\n const hitElement = doc.elementFromPoint(6, 6);\n hasInternalReferenceBug = (hitElement && hitElement.id) === 'hitme';\n doc.body.removeChild(svg);\n }\n if (hasInternalReferenceBug) {\n return win.location.href\n .split('#')[0] // remove the hash\n .replace(/<[^>]*>/g, '') // wing cut HTML\n // escape parantheses and quotes\n .replace(/([\\('\\)])/g, '\\\\$1')\n // replace spaces (needed for Safari only)\n .replace(/ /g, '%20');\n }\n }\n return '';\n }\n /**\n * Get the global style setting for the renderer.\n *\n * @private\n * @function Highcharts.SVGRenderer#getStyle\n *\n * @param {Highcharts.CSSObject} style\n * Style settings.\n *\n * @return {Highcharts.CSSObject}\n * The style settings mixed with defaults.\n */\n getStyle(style) {\n this.style = extend({\n fontFamily: 'Helvetica, Arial, sans-serif',\n fontSize: '1rem'\n }, style);\n return this.style;\n }\n /**\n * Apply the global style on the renderer, mixed with the default styles.\n *\n * @function Highcharts.SVGRenderer#setStyle\n *\n * @param {Highcharts.CSSObject} style\n * CSS to apply.\n */\n setStyle(style) {\n this.boxWrapper.css(this.getStyle(style));\n }\n /**\n * Detect whether the renderer is hidden. This happens when one of the\n * parent elements has `display: none`. Used internally to detect when we\n * needto render preliminarily in another div to get the text bounding boxes\n * right.\n *\n * @function Highcharts.SVGRenderer#isHidden\n *\n * @return {boolean}\n * True if it is hidden.\n */\n isHidden() {\n return !this.boxWrapper.getBBox().width;\n }\n /**\n * Destroys the renderer and its allocated members.\n *\n * @function Highcharts.SVGRenderer#destroy\n *\n * @return {null}\n * Pass through value.\n */\n destroy() {\n const renderer = this, rendererDefs = renderer.defs;\n renderer.box = null;\n renderer.boxWrapper = renderer.boxWrapper.destroy();\n // Call destroy on all gradient elements\n destroyObjectProperties(renderer.gradients || {});\n renderer.gradients = null;\n renderer.defs = rendererDefs.destroy();\n // Remove sub pixel fix handler (#982)\n if (renderer.unSubPixelFix) {\n renderer.unSubPixelFix();\n }\n renderer.alignedObjects = null;\n return null;\n }\n /**\n * Create a wrapper for an SVG element. Serves as a factory for\n * {@link SVGElement}, but this function is itself mostly called from\n * primitive factories like {@link SVGRenderer#path}, {@link\n * SVGRenderer#rect} or {@link SVGRenderer#text}.\n *\n * @function Highcharts.SVGRenderer#createElement\n *\n * @param {string} nodeName\n * The node name, for example `rect`, `g` etc.\n *\n * @return {Highcharts.SVGElement}\n * The generated SVGElement.\n */\n createElement(nodeName) {\n const wrapper = new this.Element();\n wrapper.init(this, nodeName);\n return wrapper;\n }\n /**\n * Get converted radial gradient attributes according to the radial\n * reference. Used internally from the {@link SVGElement#colorGradient}\n * function.\n *\n * @private\n * @function Highcharts.SVGRenderer#getRadialAttr\n */\n getRadialAttr(radialReference, gradAttr) {\n return {\n cx: (radialReference[0] - radialReference[2] / 2) +\n (gradAttr.cx || 0) * radialReference[2],\n cy: (radialReference[1] - radialReference[2] / 2) +\n (gradAttr.cy || 0) * radialReference[2],\n r: (gradAttr.r || 0) * radialReference[2]\n };\n }\n /**\n * Create a drop shadow definition and return its id\n *\n * @private\n * @function Highcharts.SVGRenderer#shadowDefinition\n *\n * @param {boolean|Highcharts.ShadowOptionsObject} [shadowOptions] The\n * shadow options. If `true`, the default options are applied\n */\n shadowDefinition(shadowOptions) {\n const id = [\n `highcharts-drop-shadow-${this.chartIndex}`,\n ...Object.keys(shadowOptions)\n .map((key) => shadowOptions[key])\n ].join('-').replace(/[^a-z0-9\\-]/g, ''), options = merge({\n color: '#000000',\n offsetX: 1,\n offsetY: 1,\n opacity: 0.15,\n width: 5\n }, shadowOptions);\n if (!this.defs.element.querySelector(`#${id}`)) {\n this.definition({\n tagName: 'filter',\n attributes: {\n id\n },\n children: [{\n tagName: 'feDropShadow',\n attributes: {\n dx: options.offsetX,\n dy: options.offsetY,\n 'flood-color': options.color,\n // Tuned and modified to keep a preserve compatibility\n // with the old settings\n 'flood-opacity': Math.min(options.opacity * 5, 1),\n stdDeviation: options.width / 2\n }\n }]\n });\n }\n return id;\n }\n /**\n * Parse a simple HTML string into SVG tspans. Called internally when text\n * is set on an SVGElement. The function supports a subset of HTML tags, CSS\n * text features like `width`, `text-overflow`, `white-space`, and also\n * attributes like `href` and `style`.\n *\n * @private\n * @function Highcharts.SVGRenderer#buildText\n *\n * @param {Highcharts.SVGElement} wrapper\n * The parent SVGElement.\n */\n buildText(wrapper) {\n new TextBuilder(wrapper).buildSVG();\n }\n /**\n * Returns white for dark colors and black for bright colors, based on W3C's\n * definition of [Relative luminance](\n * https://www.w3.org/WAI/GL/wiki/Relative_luminance).\n *\n * @function Highcharts.SVGRenderer#getContrast\n *\n * @param {Highcharts.ColorString} color\n * The color to get the contrast for.\n *\n * @return {Highcharts.ColorString}\n * The contrast color, either `#000000` or `#FFFFFF`.\n */\n getContrast(color) {\n // #6216, #17273\n const rgba = Color.parse(color).rgba\n .map((b8) => {\n const c = b8 / 255;\n return c <= 0.03928 ?\n c / 12.92 :\n Math.pow((c + 0.055) / 1.055, 2.4);\n });\n // Relative luminance\n const l = 0.2126 * rgba[0] + 0.7152 * rgba[1] + 0.0722 * rgba[2];\n // Use white or black based on which provides more contrast\n return 1.05 / (l + 0.05) > (l + 0.05) / 0.05 ? '#FFFFFF' : '#000000';\n }\n /**\n * Create a button with preset states.\n *\n * @function Highcharts.SVGRenderer#button\n *\n * @param {string} text\n * The text or HTML to draw.\n *\n * @param {number} x\n * The x position of the button's left side.\n *\n * @param {number} y\n * The y position of the button's top side.\n *\n * @param {Highcharts.EventCallbackFunction} callback\n * The function to execute on button click or touch.\n *\n * @param {Highcharts.SVGAttributes} [theme]\n * SVG attributes for the normal state.\n *\n * @param {Highcharts.SVGAttributes} [hoverState]\n * SVG attributes for the hover state.\n *\n * @param {Highcharts.SVGAttributes} [selectState]\n * SVG attributes for the pressed state.\n *\n * @param {Highcharts.SVGAttributes} [disabledState]\n * SVG attributes for the disabled state.\n *\n * @param {Highcharts.SymbolKeyValue} [shape=rect]\n * The shape type.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @return {Highcharts.SVGElement}\n * The button element.\n */\n button(text, x, y, callback, theme = {}, hoverState, selectState, disabledState, shape, useHTML) {\n const label = this.label(text, x, y, shape, void 0, void 0, useHTML, void 0, 'button'), styledMode = this.styledMode, states = theme.states || {};\n let curState = 0;\n theme = merge(theme);\n delete theme.states;\n const normalStyle = merge({\n color: \"#333333\" /* Palette.neutralColor80 */,\n cursor: 'pointer',\n fontSize: '0.8em',\n fontWeight: 'normal'\n }, theme.style);\n delete theme.style;\n // Remove stylable attributes. Pass in the ButtonThemeObject and get the\n // SVGAttributes subset back.\n let normalState = AST.filterUserAttributes(theme);\n // Default, non-stylable attributes\n label.attr(merge({ padding: 8, r: 2 }, normalState));\n // Presentational. The string type is a mistake, it is just for\n // compliance with SVGAttribute and is not used in button theme.\n let hoverStyle, selectStyle, disabledStyle;\n if (!styledMode) {\n // Normal state - prepare the attributes\n normalState = merge({\n fill: \"#f7f7f7\" /* Palette.neutralColor3 */,\n stroke: \"#cccccc\" /* Palette.neutralColor20 */,\n 'stroke-width': 1\n }, normalState);\n // Hover state\n hoverState = merge(normalState, {\n fill: \"#e6e6e6\" /* Palette.neutralColor10 */\n }, AST.filterUserAttributes(hoverState || states.hover || {}));\n hoverStyle = hoverState.style;\n delete hoverState.style;\n // Pressed state\n selectState = merge(normalState, {\n fill: \"#e6e9ff\" /* Palette.highlightColor10 */,\n style: {\n color: \"#000000\" /* Palette.neutralColor100 */,\n fontWeight: 'bold'\n }\n }, AST.filterUserAttributes(selectState || states.select || {}));\n selectStyle = selectState.style;\n delete selectState.style;\n // Disabled state\n disabledState = merge(normalState, {\n style: {\n color: \"#cccccc\" /* Palette.neutralColor20 */\n }\n }, AST.filterUserAttributes(disabledState || states.disabled || {}));\n disabledStyle = disabledState.style;\n delete disabledState.style;\n }\n // Add the events. IE9 and IE10 need mouseover and mouseout to function\n // (#667).\n addEvent(label.element, isMS ? 'mouseover' : 'mouseenter', function () {\n if (curState !== 3) {\n label.setState(1);\n }\n });\n addEvent(label.element, isMS ? 'mouseout' : 'mouseleave', function () {\n if (curState !== 3) {\n label.setState(curState);\n }\n });\n label.setState = function (state) {\n // Hover state is temporary, don't record it\n if (state !== 1) {\n label.state = curState = state;\n }\n // Update visuals\n label\n .removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)\n .addClass('highcharts-button-' +\n ['normal', 'hover', 'pressed', 'disabled'][state || 0]);\n if (!styledMode) {\n label\n .attr([\n normalState,\n hoverState,\n selectState,\n disabledState\n ][state || 0]);\n const css = [\n normalStyle,\n hoverStyle,\n selectStyle,\n disabledStyle\n ][state || 0];\n if (isObject(css)) {\n label.css(css);\n }\n }\n };\n // Presentational attributes\n if (!styledMode) {\n label\n .attr(normalState)\n .css(extend({ cursor: 'default' }, normalStyle));\n // HTML labels don't need to handle pointer events because click and\n // mouseenter/mouseleave is bound to the underlying element.\n // Should this be reconsidered, we need more complex logic to share\n // events between the and its
counterpart, and avoid\n // triggering mouseenter/mouseleave when hovering from one to the\n // other (#17440).\n if (useHTML) {\n label.text.css({ pointerEvents: 'none' });\n }\n }\n return label\n .on('touchstart', (e) => e.stopPropagation())\n .on('click', function (e) {\n if (curState !== 3) {\n callback.call(label, e);\n }\n });\n }\n /**\n * Make a straight line crisper by not spilling out to neighbour pixels.\n *\n * @function Highcharts.SVGRenderer#crispLine\n *\n * @param {Highcharts.SVGPathArray} points\n * The original points on the format `[['M', 0, 0], ['L', 100, 0]]`.\n *\n * @param {number} width\n * The width of the line.\n *\n * @param {string} [roundingFunction=round]\n * The rounding function name on the `Math` object, can be one of\n * `round`, `floor` or `ceil`.\n *\n * @return {Highcharts.SVGPathArray}\n * The original points array, but modified to render crisply.\n */\n crispLine(points, width, roundingFunction = 'round') {\n const start = points[0];\n const end = points[1];\n // Normalize to a crisp line\n if (defined(start[1]) && start[1] === end[1]) {\n // Substract due to #1129. Now bottom and left axis gridlines behave\n // the same.\n start[1] = end[1] =\n Math[roundingFunction](start[1]) - (width % 2 / 2);\n }\n if (defined(start[2]) && start[2] === end[2]) {\n start[2] = end[2] =\n Math[roundingFunction](start[2]) + (width % 2 / 2);\n }\n return points;\n }\n /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @sample highcharts/members/renderer-path-on-chart/\n * Draw a path in a chart\n * @sample highcharts/members/renderer-path/\n * Draw a path independent from a chart\n *\n * @example\n * let path = renderer.path(['M', 10, 10, 'L', 30, 30, 'z'])\n * .attr({ stroke: '#ff00ff' })\n * .add();\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGPathArray} [path]\n * An SVG path definition in array form.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n *\n */ /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n path(path) {\n const attribs = (this.styledMode ? {} : {\n fill: 'none'\n });\n if (isArray(path)) {\n attribs.d = path;\n }\n else if (isObject(path)) { // attributes\n extend(attribs, path);\n }\n return this.createElement('path').attr(attribs);\n }\n /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @sample highcharts/members/renderer-circle/\n * Drawing a circle\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {number} [x]\n * The center x position.\n *\n * @param {number} [y]\n * The center y position.\n *\n * @param {number} [r]\n * The radius.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n circle(x, y, r) {\n const attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ? {} : { x: x, y: y, r: r }), wrapper = this.createElement('circle');\n // Setting x or y translates to cx and cy\n wrapper.xSetter = wrapper.ySetter = function (value, key, element) {\n element.setAttribute('c' + key, value);\n };\n return wrapper.attr(attribs);\n }\n /**\n * Draw and return an arc.\n *\n * @sample highcharts/members/renderer-arc/\n * Drawing an arc\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {number} [x=0]\n * Center X position.\n *\n * @param {number} [y=0]\n * Center Y position.\n *\n * @param {number} [r=0]\n * The outer radius' of the arc.\n *\n * @param {number} [innerR=0]\n * Inner radius like used in donut charts.\n *\n * @param {number} [start=0]\n * The starting angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @param {number} [end=0]\n * The ending angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return an arc. Overloaded function that takes arguments object.\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {Highcharts.SVGAttributes} attribs\n * Initial SVG attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n arc(x, y, r, innerR, start, end) {\n let options;\n if (isObject(x)) {\n options = x;\n y = options.y;\n r = options.r;\n innerR = options.innerR;\n start = options.start;\n end = options.end;\n x = options.x;\n }\n else {\n options = { innerR, start, end };\n }\n // Arcs are defined as symbols for the ability to set\n // attributes in attr and animate\n const arc = this.symbol('arc', x, y, r, r, options);\n arc.r = r; // #959\n return arc;\n }\n /**\n * Draw and return a rectangle.\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {number} [x]\n * Left position.\n *\n * @param {number} [y]\n * Top position.\n *\n * @param {number} [width]\n * Width of the rectangle.\n *\n * @param {number} [height]\n * Height of the rectangle.\n *\n * @param {number} [r]\n * Border corner radius.\n *\n * @param {number} [strokeWidth]\n * A stroke width can be supplied to allow crisp drawing.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return a rectangle.\n *\n * @sample highcharts/members/renderer-rect-on-chart/\n * Draw a rectangle in a chart\n * @sample highcharts/members/renderer-rect/\n * Draw a rectangle independent from a chart\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {Highcharts.SVGAttributes} [attributes]\n * General SVG attributes for the rectangle.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n rect(x, y, width, height, r, strokeWidth) {\n const attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ?\n {} :\n {\n x,\n y,\n r,\n width: Math.max(width || 0, 0),\n height: Math.max(height || 0, 0)\n }), wrapper = this.createElement('rect');\n if (!this.styledMode) {\n if (typeof strokeWidth !== 'undefined') {\n attribs['stroke-width'] = strokeWidth;\n extend(attribs, wrapper.crisp(attribs));\n }\n attribs.fill = 'none';\n }\n wrapper.rSetter = function (value, _key, element) {\n wrapper.r = value;\n attr(element, {\n rx: value,\n ry: value\n });\n };\n wrapper.rGetter = function () {\n return wrapper.r || 0;\n };\n return wrapper.attr(attribs);\n }\n /**\n * Draw and return a rectangle with advanced corner rounding options.\n *\n * @function Highcharts.SVGRenderer#roundedRect\n *\n * @param {Highcharts.SVGAttributes} attribs\n * Attributes\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n roundedRect(attribs) {\n return this.symbol('roundedRect').attr(attribs);\n }\n /**\n * Resize the {@link SVGRenderer#box} and re-align all aligned child\n * elements.\n *\n * @sample highcharts/members/renderer-g/\n * Show and hide grouped objects\n *\n * @function Highcharts.SVGRenderer#setSize\n *\n * @param {number} width\n * The new pixel width.\n *\n * @param {number} height\n * The new pixel height.\n *\n * @param {boolean|Partial} [animate=true]\n * Whether and how to animate.\n */\n setSize(width, height, animate) {\n const renderer = this;\n renderer.width = width;\n renderer.height = height;\n renderer.boxWrapper.animate({\n width: width,\n height: height\n }, {\n step: function () {\n this.attr({\n viewBox: '0 0 ' + this.attr('width') + ' ' +\n this.attr('height')\n });\n },\n duration: pick(animate, true) ? void 0 : 0\n });\n renderer.alignElements();\n }\n /**\n * Create and return an svg group element. Child\n * {@link Highcharts.SVGElement} objects are added to the group by using the\n * group as the first parameter in {@link Highcharts.SVGElement#add|add()}.\n *\n * @function Highcharts.SVGRenderer#g\n *\n * @param {string} [name]\n * The group will be given a class name of `highcharts-{name}`. This\n * can be used for styling and scripting.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n g(name) {\n const elem = this.createElement('g');\n return name ?\n elem.attr({ 'class': 'highcharts-' + name }) :\n elem;\n }\n /**\n * Display an image.\n *\n * @sample highcharts/members/renderer-image-on-chart/\n * Add an image in a chart\n * @sample highcharts/members/renderer-image/\n * Add an image independent of a chart\n *\n * @function Highcharts.SVGRenderer#image\n *\n * @param {string} src\n * The image source.\n *\n * @param {number} [x]\n * The X position.\n *\n * @param {number} [y]\n * The Y position.\n *\n * @param {number} [width]\n * The image width. If omitted, it defaults to the image file width.\n *\n * @param {number} [height]\n * The image height. If omitted it defaults to the image file\n * height.\n *\n * @param {Function} [onload]\n * Event handler for image load.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n image(src, x, y, width, height, onload) {\n const attribs = { preserveAspectRatio: 'none' }, setSVGImageSource = function (el, src) {\n // Set the href in the xlink namespace\n if (el.setAttributeNS) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', 'href', src);\n }\n else {\n // could be exporting in IE\n // using href throws \"not supported\" in ie7 and under,\n // requries regex shim to fix later\n el.setAttribute('hc-svg-href', src);\n }\n };\n // Optional properties (#11756)\n if (isNumber(x)) {\n attribs.x = x;\n }\n if (isNumber(y)) {\n attribs.y = y;\n }\n if (isNumber(width)) {\n attribs.width = width;\n }\n if (isNumber(height)) {\n attribs.height = height;\n }\n const elemWrapper = this.createElement('image').attr(attribs), onDummyLoad = function (e) {\n setSVGImageSource(elemWrapper.element, src);\n onload.call(elemWrapper, e);\n };\n // Add load event if supplied\n if (onload) {\n // We have to use a dummy HTML image since IE support for SVG image\n // load events is very buggy. First set a transparent src, wait for\n // dummy to load, and then add the real src to the SVG image.\n setSVGImageSource(elemWrapper.element, 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* eslint-disable-line */);\n const dummy = new win.Image();\n addEvent(dummy, 'load', onDummyLoad);\n dummy.src = src;\n if (dummy.complete) {\n onDummyLoad({});\n }\n }\n else {\n setSVGImageSource(elemWrapper.element, src);\n }\n return elemWrapper;\n }\n /**\n * Draw a symbol out of pre-defined shape paths from\n * {@link SVGRenderer#symbols}.\n * It is used in Highcharts for point makers, which cake a `symbol` option,\n * and label and button backgrounds like in the tooltip and stock flags.\n *\n * @function Highcharts.SVGRenderer#symbol\n *\n * @param {string} symbol\n * The symbol name.\n *\n * @param {number} [x]\n * The X coordinate for the top left position.\n *\n * @param {number} [y]\n * The Y coordinate for the top left position.\n *\n * @param {number} [width]\n * The pixel width.\n *\n * @param {number} [height]\n * The pixel height.\n *\n * @param {Highcharts.SymbolOptionsObject} [options]\n * Additional options, depending on the actual symbol drawn.\n *\n * @return {Highcharts.SVGElement}\n * SVG symbol.\n */\n symbol(symbol, x, y, width, height, options) {\n const ren = this, imageRegex = /^url\\((.*?)\\)$/, isImage = imageRegex.test(symbol), sym = (!isImage && (this.symbols[symbol] ? symbol : 'circle')), \n // get the symbol definition function\n symbolFn = (sym && this.symbols[sym]);\n let obj, path, imageSrc, centerImage;\n if (symbolFn) {\n // Check if there's a path defined for this symbol\n if (typeof x === 'number') {\n path = symbolFn.call(this.symbols, Math.round(x || 0), Math.round(y || 0), width || 0, height || 0, options);\n }\n obj = this.path(path);\n if (!ren.styledMode) {\n obj.attr('fill', 'none');\n }\n // expando properties for use in animate and attr\n extend(obj, {\n symbolName: (sym || void 0),\n x: x,\n y: y,\n width: width,\n height: height\n });\n if (options) {\n extend(obj, options);\n }\n // Image symbols\n }\n else if (isImage) {\n imageSrc = symbol.match(imageRegex)[1];\n // Create the image synchronously, add attribs async\n const img = obj = this.image(imageSrc);\n // The image width is not always the same as the symbol width. The\n // image may be centered within the symbol, as is the case when\n // image shapes are used as label backgrounds, for example in flags.\n img.imgwidth = pick(options && options.width, symbolSizes[imageSrc] && symbolSizes[imageSrc].width);\n img.imgheight = pick(options && options.height, symbolSizes[imageSrc] && symbolSizes[imageSrc].height);\n /**\n * Set the size and position\n */\n centerImage = (obj) => obj.attr({\n width: obj.width,\n height: obj.height\n });\n /**\n * Width and height setters that take both the image's physical size\n * and the label size into consideration, and translates the image\n * to center within the label.\n */\n ['width', 'height'].forEach(function (key) {\n img[key + 'Setter'] = function (value, key) {\n this[key] = value;\n const { alignByTranslate, element, width, height, imgwidth, imgheight } = this;\n let imgSize = this['img' + key];\n if (defined(imgSize)) {\n let scale = 1;\n // Scale and center the image within its container.\n // The name `backgroundSize` is taken from the CSS spec,\n // but the value `within` is made up. Other possible\n // values in the spec, `cover` and `contain`, can be\n // implemented if needed.\n if (options &&\n options.backgroundSize === 'within' &&\n width &&\n height) {\n scale = Math.min(width / imgwidth, height / imgheight);\n imgSize = Math.round(imgSize * scale);\n // Update both width and height to keep the ratio\n // correct (#17315)\n attr(element, {\n width: Math.round(imgwidth * scale),\n height: Math.round(imgheight * scale)\n });\n }\n else if (element) {\n element.setAttribute(key, imgSize);\n }\n if (!alignByTranslate) {\n this.translate(((width || 0) - (imgwidth * scale)) / 2, ((height || 0) - (imgheight * scale)) / 2);\n }\n }\n };\n });\n if (defined(x)) {\n img.attr({\n x: x,\n y: y\n });\n }\n img.isImg = true;\n if (defined(img.imgwidth) && defined(img.imgheight)) {\n centerImage(img);\n }\n else {\n // Initialize image to be 0 size so export will still function\n // if there's no cached sizes.\n img.attr({ width: 0, height: 0 });\n // Create a dummy JavaScript image to get the width and height.\n createElement('img', {\n onload: function () {\n const chart = charts[ren.chartIndex];\n // Special case for SVGs on IE11, the width is not\n // accessible until the image is part of the DOM\n // (#2854).\n if (this.width === 0) {\n css(this, {\n position: 'absolute',\n top: '-999em'\n });\n doc.body.appendChild(this);\n }\n // Center the image\n symbolSizes[imageSrc] = {\n width: this.width,\n height: this.height\n };\n img.imgwidth = this.width;\n img.imgheight = this.height;\n if (img.element) {\n centerImage(img);\n }\n // Clean up after #2854 workaround.\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n // Fire the load event when all external images are\n // loaded\n ren.imgCount--;\n if (!ren.imgCount && chart && !chart.hasLoaded) {\n chart.onload();\n }\n },\n src: imageSrc\n });\n this.imgCount++;\n }\n }\n return obj;\n }\n /**\n * Define a clipping rectangle. The clipping rectangle is later applied\n * to {@link SVGElement} objects through the {@link SVGElement#clip}\n * function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @function Highcharts.SVGRenderer#clipRect\n *\n * @param {number} [x]\n *\n * @param {number} [y]\n *\n * @param {number} [width]\n *\n * @param {number} [height]\n *\n * @return {Highcharts.ClipRectElement}\n * A clipping rectangle.\n */\n clipRect(x, y, width, height) {\n const \n // Add a hyphen at the end to avoid confusion in testing indexes\n // -1 and -10, -11 etc (#6550)\n id = uniqueKey() + '-', clipPath = this.createElement('clipPath').attr({\n id: id\n }).add(this.defs), wrapper = this.rect(x, y, width, height, 0).add(clipPath);\n wrapper.id = id;\n wrapper.clipPath = clipPath;\n wrapper.count = 0;\n return wrapper;\n }\n /**\n * Draw text. The text can contain a subset of HTML, like spans and anchors\n * and some basic text styling of these. For more advanced features like\n * border and background, use {@link Highcharts.SVGRenderer#label} instead.\n * To update the text after render, run `text.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Annotate the chart freely\n * @sample highcharts/members/renderer-on-chart/\n * Annotate with a border and in response to the data\n * @sample highcharts/members/renderer-text/\n * Formatted text\n *\n * @function Highcharts.SVGRenderer#text\n *\n * @param {string} [str]\n * The text of (subset) HTML to draw.\n *\n * @param {number} [x]\n * The x position of the text's lower left corner.\n *\n * @param {number} [y]\n * The y position of the text's lower left corner.\n *\n * @param {boolean} [useHTML=false]\n * Use HTML to render the text.\n *\n * @return {Highcharts.SVGElement}\n * The text object.\n */\n text(str, x, y, useHTML) {\n const renderer = this, attribs = {};\n if (useHTML && (renderer.allowHTML || !renderer.forExport)) {\n return renderer.html(str, x, y);\n }\n attribs.x = Math.round(x || 0); // X always needed for line-wrap logic\n if (y) {\n attribs.y = Math.round(y);\n }\n if (defined(str)) {\n attribs.text = str;\n }\n const wrapper = renderer.createElement('text').attr(attribs);\n if (!useHTML || (renderer.forExport && !renderer.allowHTML)) {\n wrapper.xSetter = function (value, key, element) {\n const tspans = element.getElementsByTagName('tspan'), parentVal = element.getAttribute(key);\n for (let i = 0, tspan; i < tspans.length; i++) {\n tspan = tspans[i];\n // If the x values are equal, the tspan represents a line\n // break\n if (tspan.getAttribute(key) === parentVal) {\n tspan.setAttribute(key, value);\n }\n }\n element.setAttribute(key, value);\n };\n }\n return wrapper;\n }\n /**\n * Utility to return the baseline offset and total line height from the font\n * size.\n *\n * @function Highcharts.SVGRenderer#fontMetrics\n *\n * @param {Highcharts.SVGElement|Highcharts.SVGDOMElement|number} [element]\n * The element to inspect for a current font size. If a number is\n * given, it's used as a fall back for direct font size in pixels.\n *\n * @return {Highcharts.FontMetricsObject}\n * The font metrics.\n */\n fontMetrics(element) {\n const f = pInt(SVGElement.prototype.getStyle.call(element, 'font-size') || 0);\n // Empirical values found by comparing font size and bounding box\n // height. Applies to the default font family.\n // https://jsfiddle.net/highcharts/7xvn7/\n const h = f < 24 ? f + 3 : Math.round(f * 1.2), b = Math.round(h * 0.8);\n return {\n // Line height\n h,\n // Baseline\n b,\n // Font size\n f\n };\n }\n /**\n * Correct X and Y positioning of a label for rotation (#1764).\n *\n * @private\n * @function Highcharts.SVGRenderer#rotCorr\n */\n rotCorr(baseline, rotation, alterY) {\n let y = baseline;\n if (rotation && alterY) {\n y = Math.max(y * Math.cos(rotation * deg2rad), 4);\n }\n return {\n x: (-baseline / 3) * Math.sin(rotation * deg2rad),\n y: y\n };\n }\n /**\n * Compatibility function to convert the legacy one-dimensional path array\n * into an array of segments.\n *\n * It is used in maps to parse the `path` option, and in SVGRenderer.dSetter\n * to support legacy paths from demos.\n *\n * @private\n * @function Highcharts.SVGRenderer#pathToSegments\n */\n pathToSegments(path) {\n const ret = [];\n const segment = [];\n const commandLength = {\n A: 8,\n C: 7,\n H: 2,\n L: 3,\n M: 3,\n Q: 5,\n S: 5,\n T: 3,\n V: 2\n };\n // Short, non-typesafe parsing of the one-dimensional array. It splits\n // the path on any string. This is not type checked against the tuple\n // types, but is shorter, and doesn't require specific checks for any\n // command type in SVG.\n for (let i = 0; i < path.length; i++) {\n // Command skipped, repeat previous or insert L/l for M/m\n if (isString(segment[0]) &&\n isNumber(path[i]) &&\n segment.length === commandLength[(segment[0].toUpperCase())]) {\n path.splice(i, 0, segment[0].replace('M', 'L').replace('m', 'l'));\n }\n // Split on string\n if (typeof path[i] === 'string') {\n if (segment.length) {\n ret.push(segment.slice(0));\n }\n segment.length = 0;\n }\n segment.push(path[i]);\n }\n ret.push(segment.slice(0));\n return ret;\n /*\n // Fully type-safe version where each tuple type is checked. The\n // downside is filesize and a lack of flexibility for unsupported\n // commands\n const ret: SVGPath = [],\n commands = {\n A: 7,\n C: 6,\n H: 1,\n L: 2,\n M: 2,\n Q: 4,\n S: 4,\n T: 2,\n V: 1,\n Z: 0\n };\n\n let i = 0,\n lastI = 0,\n lastCommand;\n\n while (i < path.length) {\n const item = path[i];\n\n let command;\n\n if (typeof item === 'string') {\n command = item;\n i += 1;\n } else {\n command = lastCommand || 'M';\n }\n\n // Upper case\n const commandUC = command.toUpperCase();\n\n if (commandUC in commands) {\n\n // No numeric parameters\n if (command === 'Z' || command === 'z') {\n ret.push([command]);\n\n // One numeric parameter\n } else {\n const val0 = path[i];\n if (typeof val0 === 'number') {\n\n // Horizontal line to\n if (command === 'H' || command === 'h') {\n ret.push([command, val0]);\n i += 1;\n\n // Vertical line to\n } else if (command === 'V' || command === 'v') {\n ret.push([command, val0]);\n i += 1;\n\n // Two numeric parameters\n } else {\n const val1 = path[i + 1];\n if (typeof val1 === 'number') {\n // lineTo\n if (command === 'L' || command === 'l') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // moveTo\n } else if (command === 'M' || command === 'm') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Smooth quadratic bezier\n } else if (command === 'T' || command === 't') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Four numeric parameters\n } else {\n const val2 = path[i + 2],\n val3 = path[i + 3];\n if (\n typeof val2 === 'number' &&\n typeof val3 === 'number'\n ) {\n // Quadratic bezier to\n if (\n command === 'Q' ||\n command === 'q'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Smooth cubic bezier to\n } else if (\n command === 'S' ||\n command === 's'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Six numeric parameters\n } else {\n const val4 = path[i + 4],\n val5 = path[i + 5];\n\n if (\n typeof val4 === 'number' &&\n typeof val5 === 'number'\n ) {\n // Curve to\n if (\n command === 'C' ||\n command === 'c'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5\n ]);\n i += 6;\n\n // Seven numeric parameters\n } else {\n const val6 = path[i + 6];\n\n // Arc to\n if (\n typeof val6 ===\n 'number' &&\n (\n command === 'A' ||\n command === 'a'\n )\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5,\n val6\n ]);\n i += 7;\n\n }\n\n }\n }\n }\n }\n }\n }\n\n }\n }\n }\n }\n\n // An unmarked command following a moveTo is a lineTo\n lastCommand = command === 'M' ? 'L' : command;\n\n if (i === lastI) {\n break;\n }\n lastI = i;\n }\n return ret;\n */\n }\n /**\n * Draw a label, which is an extended text element with support for border\n * and background. Highcharts creates a `g` element with a text and a `path`\n * or `rect` inside, to make it behave somewhat like a HTML div. Border and\n * background are set through `stroke`, `stroke-width` and `fill` attributes\n * using the {@link Highcharts.SVGElement#attr|attr} method. To update the\n * text after render, run `label.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-label-on-chart/\n * A label on the chart\n *\n * @function Highcharts.SVGRenderer#label\n *\n * @param {string} str\n * The initial text string or (subset) HTML to render.\n *\n * @param {number} x\n * The x position of the label's left side.\n *\n * @param {number} [y]\n * The y position of the label's top side or baseline, depending on\n * the `baseline` parameter.\n *\n * @param {string} [shape='rect']\n * The shape of the label's border/background, if any. Defaults to\n * `rect`. Other possible values are `callout` or other shapes\n * defined in {@link Highcharts.SVGRenderer#symbols}.\n *\n * @param {number} [anchorX]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {number} [anchorY]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @param {boolean} [baseline=false]\n * Whether to position the label relative to the text baseline,\n * like {@link Highcharts.SVGRenderer#text|renderer.text}, or to the\n * upper border of the rectangle.\n *\n * @param {string} [className]\n * Class name for the group.\n *\n * @return {Highcharts.SVGElement}\n * The generated label.\n */\n label(str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n return new SVGLabel(this, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className);\n }\n /**\n * Re-align all aligned elements.\n *\n * @private\n * @function Highcharts.SVGRenderer#alignElements\n */\n alignElements() {\n this.alignedObjects.forEach((el) => el.align());\n }\n }\n extend(SVGRenderer.prototype, {\n /**\n * A pointer to the renderer's associated Element class.\n *\n * @name Highcharts.SVGRenderer#Element\n * @type {Highcharts.SVGElement}\n */\n Element: SVGElement,\n SVG_NS,\n /**\n * A collection of characters mapped to HTML entities. When `useHTML` on an\n * element is true, these entities will be rendered correctly by HTML. In\n * the SVG pseudo-HTML, they need to be unescaped back to simple characters,\n * so for example `<` will render as `<`.\n *\n * @example\n * // Add support for unescaping quotes\n * Highcharts.SVGRenderer.prototype.escapes['\"'] = '"';\n *\n * @name Highcharts.SVGRenderer#escapes\n * @type {Highcharts.Dictionary}\n */\n escapes: {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n },\n /**\n * An extendable collection of functions for defining symbol paths.\n *\n * @name Highcharts.SVGRenderer#symbols\n * @type {Highcharts.SymbolDictionary}\n */\n symbols: Symbols,\n /**\n * Dummy function for plugins, called every time the renderer is updated.\n * Prior to Highcharts 5, this was used for the canvg renderer.\n *\n * @deprecated\n * @function Highcharts.SVGRenderer#draw\n */\n draw: noop\n });\n /* *\n *\n * Registry\n *\n * */\n RendererRegistry.registerRendererType('svg', SVGRenderer, true);\n /* *\n *\n * Export Default\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A clipping rectangle that can be applied to one or more {@link SVGElement}\n * instances. It is instanciated with the {@link SVGRenderer#clipRect} function\n * and applied with the {@link SVGElement#clip} function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @typedef {Highcharts.SVGElement} Highcharts.ClipRectElement\n */\n /**\n * The font metrics.\n *\n * @interface Highcharts.FontMetricsObject\n */ /**\n * The baseline relative to the top of the box.\n *\n * @name Highcharts.FontMetricsObject#b\n * @type {number}\n */ /**\n * The font size.\n *\n * @name Highcharts.FontMetricsObject#f\n * @type {number}\n */ /**\n * The line height.\n *\n * @name Highcharts.FontMetricsObject#h\n * @type {number}\n */\n /**\n * An object containing `x` and `y` properties for the position of an element.\n *\n * @interface Highcharts.PositionObject\n */ /**\n * X position of the element.\n * @name Highcharts.PositionObject#x\n * @type {number}\n */ /**\n * Y position of the element.\n * @name Highcharts.PositionObject#y\n * @type {number}\n */\n /**\n * A rectangle.\n *\n * @interface Highcharts.RectangleObject\n */ /**\n * Height of the rectangle.\n * @name Highcharts.RectangleObject#height\n * @type {number}\n */ /**\n * Width of the rectangle.\n * @name Highcharts.RectangleObject#width\n * @type {number}\n */ /**\n * Horizontal position of the rectangle.\n * @name Highcharts.RectangleObject#x\n * @type {number}\n */ /**\n * Vertical position of the rectangle.\n * @name Highcharts.RectangleObject#y\n * @type {number}\n */\n /**\n * The shadow options.\n *\n * @interface Highcharts.ShadowOptionsObject\n */ /**\n * The shadow color.\n * @name Highcharts.ShadowOptionsObject#color\n * @type {Highcharts.ColorString|undefined}\n * @default #000000\n */ /**\n * The horizontal offset from the element.\n *\n * @name Highcharts.ShadowOptionsObject#offsetX\n * @type {number|undefined}\n * @default 1\n */ /**\n * The vertical offset from the element.\n * @name Highcharts.ShadowOptionsObject#offsetY\n * @type {number|undefined}\n * @default 1\n */ /**\n * The shadow opacity.\n *\n * @name Highcharts.ShadowOptionsObject#opacity\n * @type {number|undefined}\n * @default 0.15\n */ /**\n * The shadow width or distance from the element.\n * @name Highcharts.ShadowOptionsObject#width\n * @type {number|undefined}\n * @default 3\n */\n /**\n * @interface Highcharts.SizeObject\n */ /**\n * @name Highcharts.SizeObject#height\n * @type {number}\n */ /**\n * @name Highcharts.SizeObject#width\n * @type {number}\n */\n /**\n * Array of path commands, that will go into the `d` attribute of an SVG\n * element.\n *\n * @typedef {Array<(Array|Array|Array|Array|Array|Array)>} Highcharts.SVGPathArray\n */\n /**\n * Possible path commands in an SVG path array. Valid values are `A`, `C`, `H`,\n * `L`, `M`, `Q`, `S`, `T`, `V`, `Z`.\n *\n * @typedef {string} Highcharts.SVGPathCommand\n * @validvalue [\"a\",\"c\",\"h\",\"l\",\"m\",\"q\",\"s\",\"t\",\"v\",\"z\",\"A\",\"C\",\"H\",\"L\",\"M\",\"Q\",\"S\",\"T\",\"V\",\"Z\"]\n */\n /**\n * An extendable collection of functions for defining symbol paths. Symbols are\n * used internally for point markers, button and label borders and backgrounds,\n * or custom shapes. Extendable by adding to {@link SVGRenderer#symbols}.\n *\n * @interface Highcharts.SymbolDictionary\n */ /**\n * @name Highcharts.SymbolDictionary#[key:string]\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#arc\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#callout\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#circle\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#diamond\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#square\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#triangle\n * @type {Function|undefined}\n */\n /**\n * Can be one of `arc`, `callout`, `circle`, `diamond`, `square`, `triangle`,\n * and `triangle-down`. Symbols are used internally for point markers, button\n * and label borders and backgrounds, or custom shapes. Extendable by adding to\n * {@link SVGRenderer#symbols}.\n *\n * @typedef {\"arc\"|\"callout\"|\"circle\"|\"diamond\"|\"square\"|\"triangle\"|\"triangle-down\"} Highcharts.SymbolKeyValue\n */\n /**\n * Additional options, depending on the actual symbol drawn.\n *\n * @interface Highcharts.SymbolOptionsObject\n */ /**\n * The anchor X position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorX\n * @type {number|undefined}\n */ /**\n * The anchor Y position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorY\n * @type {number|undefined}\n */ /**\n * The end angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#end\n * @type {number|undefined}\n */ /**\n * Whether to draw `arc` symbol open or closed.\n *\n * @name Highcharts.SymbolOptionsObject#open\n * @type {boolean|undefined}\n */ /**\n * The radius of an `arc` symbol, or the border radius for the `callout` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#r\n * @type {number|undefined}\n */ /**\n * The start angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#start\n * @type {number|undefined}\n */\n (''); // keeps doclets above in transpiled file\n\n return SVGRenderer;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLElement.js', [_modules['Core/Globals.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (H, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { isFirefox, isMS, isWebKit, win } = H;\n const { css, defined, extend, pick, pInt } = U;\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n class HTMLElement extends SVGElement {\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Modifies SVGElement to support HTML elements.\n * @private\n */\n static compose(SVGElementClass) {\n if (U.pushUnique(composedMembers, SVGElementClass)) {\n const htmlElementProto = HTMLElement.prototype, svgElementProto = SVGElementClass.prototype;\n svgElementProto.getSpanCorrection = htmlElementProto\n .getSpanCorrection;\n svgElementProto.htmlCss = htmlElementProto.htmlCss;\n svgElementProto.htmlGetBBox = htmlElementProto.htmlGetBBox;\n svgElementProto.htmlUpdateTransform = htmlElementProto\n .htmlUpdateTransform;\n svgElementProto.setSpanRotation = htmlElementProto.setSpanRotation;\n }\n return SVGElementClass;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the correction in X and Y positioning as the element is rotated.\n * @private\n */\n getSpanCorrection(width, baseline, alignCorrection) {\n this.xCorr = -width * alignCorrection;\n this.yCorr = -baseline;\n }\n /**\n * Apply CSS to HTML elements. This is used in text within SVG rendering.\n * @private\n */\n htmlCss(styles) {\n const wrapper = this, element = wrapper.element, \n // When setting or unsetting the width style, we need to update\n // transform (#8809)\n isSettingWidth = (element.tagName === 'SPAN' &&\n styles &&\n 'width' in styles), textWidth = pick(isSettingWidth && styles.width, void 0);\n let doTransform;\n if (isSettingWidth) {\n delete styles.width;\n wrapper.textWidth = textWidth;\n doTransform = true;\n }\n if (styles && styles.textOverflow === 'ellipsis') {\n styles.whiteSpace = 'nowrap';\n styles.overflow = 'hidden';\n }\n wrapper.styles = extend(wrapper.styles, styles);\n css(wrapper.element, styles);\n // Now that all styles are applied, to the transform\n if (doTransform) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n }\n /**\n * useHTML method for calculating the bounding box based on offsets.\n */\n htmlGetBBox() {\n const wrapper = this, element = wrapper.element;\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n /**\n * @private\n */\n htmlUpdateTransform() {\n // aligning non added elements is expensive\n if (!this.added) {\n this.alignOnAdd = true;\n return;\n }\n const wrapper = this, renderer = wrapper.renderer, elem = wrapper.element, translateX = wrapper.translateX || 0, translateY = wrapper.translateY || 0, x = wrapper.x || 0, y = wrapper.y || 0, align = wrapper.textAlign || 'left', alignCorrection = {\n left: 0, center: 0.5, right: 1\n }[align], styles = wrapper.styles, whiteSpace = styles && styles.whiteSpace;\n /** @private */\n function getTextPxLength() {\n if (wrapper.textPxLength) {\n return wrapper.textPxLength;\n }\n // Reset multiline/ellipsis in order to read width (#4928,\n // #5417)\n css(elem, {\n width: '',\n whiteSpace: whiteSpace || 'nowrap'\n });\n return elem.offsetWidth;\n }\n // apply translate\n css(elem, {\n marginLeft: translateX,\n marginTop: translateY\n });\n if (elem.tagName === 'SPAN') {\n const rotation = wrapper.rotation, textWidth = wrapper.textWidth && pInt(wrapper.textWidth), currentTextTransform = [\n rotation,\n align,\n elem.innerHTML,\n wrapper.textWidth,\n wrapper.textAlign\n ].join(',');\n let baseline, hasBoxWidthChanged = false;\n // Update textWidth. Use the memoized textPxLength if possible, to\n // avoid the getTextPxLength function using elem.offsetWidth.\n // Calling offsetWidth affects rendering time as it forces layout\n // (#7656).\n if (textWidth !== wrapper.oldTextWidth) { // #983, #1254\n const textPxLength = getTextPxLength();\n if (((textWidth > wrapper.oldTextWidth) ||\n textPxLength > textWidth) && (\n // Only set the width if the text is able to word-wrap,\n // or text-overflow is ellipsis (#9537)\n /[ \\-]/.test(elem.textContent || elem.innerText) ||\n elem.style.textOverflow === 'ellipsis')) {\n css(elem, {\n width: (textPxLength > textWidth) || rotation ?\n textWidth + 'px' :\n 'auto',\n display: 'block',\n whiteSpace: whiteSpace || 'normal' // #3331\n });\n wrapper.oldTextWidth = textWidth;\n hasBoxWidthChanged = true; // #8159\n }\n }\n wrapper.hasBoxWidthChanged = hasBoxWidthChanged; // #8159\n // Do the calculations and DOM access only if properties changed\n if (currentTextTransform !== wrapper.cTT) {\n baseline = renderer.fontMetrics(elem).b;\n // Renderer specific handling of span rotation, but only if we\n // have something to update.\n if (defined(rotation) &&\n ((rotation !== (wrapper.oldRotation || 0)) ||\n (align !== wrapper.oldAlign))) {\n wrapper.setSpanRotation(rotation, alignCorrection, baseline);\n }\n wrapper.getSpanCorrection(\n // Avoid elem.offsetWidth if we can, it affects rendering\n // time heavily (#7656)\n ((!defined(rotation) && wrapper.textPxLength) || // #7920\n elem.offsetWidth), baseline, alignCorrection, rotation, align);\n }\n // apply position with correction\n css(elem, {\n left: (x + (wrapper.xCorr || 0)) + 'px',\n top: (y + (wrapper.yCorr || 0)) + 'px'\n });\n // record current text transform\n wrapper.cTT = currentTextTransform;\n wrapper.oldRotation = rotation;\n wrapper.oldAlign = align;\n }\n }\n /**\n * Set the rotation of an individual HTML span.\n * @private\n */\n setSpanRotation(rotation, alignCorrection, baseline) {\n const getTransformKey = () => (isMS &&\n !/Edge/.test(win.navigator.userAgent) ?\n '-ms-transform' :\n isWebKit ?\n '-webkit-transform' :\n isFirefox ?\n 'MozTransform' :\n win.opera ?\n '-o-transform' :\n void 0);\n const rotationStyle = {}, cssTransformKey = getTransformKey();\n if (cssTransformKey) {\n rotationStyle[cssTransformKey] = rotationStyle.transform =\n 'rotate(' + rotation + 'deg)';\n rotationStyle[cssTransformKey + (isFirefox ? 'Origin' : '-origin')] = rotationStyle.transformOrigin =\n (alignCorrection * 100) + '% ' + baseline + 'px';\n css(this.element, rotationStyle);\n }\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLElement;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (AST, SVGElement, SVGRenderer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { attr, createElement, extend, pick } = U;\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n // Extend SvgRenderer for useHTML option.\n class HTMLRenderer extends SVGRenderer {\n /* *\n *\n * Static Functions\n *\n * */\n /** @private */\n static compose(SVGRendererClass) {\n if (U.pushUnique(composedMembers, SVGRendererClass)) {\n const htmlRendererProto = HTMLRenderer.prototype, svgRendererProto = SVGRendererClass.prototype;\n svgRendererProto.html = htmlRendererProto.html;\n }\n return SVGRendererClass;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create HTML text node. This is used by the SVG renderer through the\n * useHTML option.\n *\n * @private\n * @function Highcharts.SVGRenderer#html\n *\n * @param {string} str\n * The text of (subset) HTML to draw.\n *\n * @param {number} x\n * The x position of the text's lower left corner.\n *\n * @param {number} y\n * The y position of the text's lower left corner.\n *\n * @return {Highcharts.HTMLDOMElement}\n * HTML element.\n */\n html(str, x, y) {\n const wrapper = this.createElement('span'), element = wrapper.element, renderer = wrapper.renderer, addSetters = function (gWrapper, style) {\n // These properties are set as attributes on the SVG group, and\n // as identical CSS properties on the div. (#3542)\n ['opacity', 'visibility'].forEach(function (prop) {\n gWrapper[prop + 'Setter'] = function (value, key, elem) {\n const styleObject = gWrapper.div ?\n gWrapper.div.style :\n style;\n SVGElement.prototype[prop + 'Setter']\n .call(this, value, key, elem);\n if (styleObject) {\n styleObject[key] = value;\n }\n };\n });\n gWrapper.addedSetters = true;\n };\n // Text setter\n wrapper.textSetter = function (value) {\n if (value !== this.textStr) {\n delete this.bBox;\n delete this.oldTextWidth;\n AST.setElementHTML(this.element, pick(value, ''));\n this.textStr = value;\n wrapper.doTransform = true;\n }\n };\n addSetters(wrapper, wrapper.element.style);\n // Various setters which rely on update transform\n wrapper.xSetter =\n wrapper.ySetter =\n wrapper.alignSetter =\n wrapper.rotationSetter =\n function (value, key) {\n if (key === 'align') {\n // Do not overwrite the SVGElement.align method.\n wrapper.alignValue = wrapper.textAlign = value;\n }\n else {\n wrapper[key] = value;\n }\n wrapper.doTransform = true;\n };\n // Runs at the end of .attr()\n wrapper.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.htmlUpdateTransform();\n this.doTransform = false;\n }\n };\n // Set the default attributes\n wrapper\n .attr({\n text: str,\n x: Math.round(x),\n y: Math.round(y)\n })\n .css({\n position: 'absolute'\n });\n if (!renderer.styledMode) {\n wrapper.css({\n fontFamily: this.style.fontFamily,\n fontSize: this.style.fontSize\n });\n }\n // Keep the whiteSpace style outside the wrapper.styles collection\n element.style.whiteSpace = 'nowrap';\n // Use the HTML specific .css method\n wrapper.css = wrapper.htmlCss;\n wrapper.add = function (svgGroupWrapper) {\n const container = renderer.box.parentNode, parents = [];\n let htmlGroup, parentGroup;\n this.parentGroup = svgGroupWrapper;\n // Create a mock group to hold the HTML elements\n if (svgGroupWrapper) {\n htmlGroup = svgGroupWrapper.div;\n if (!htmlGroup) {\n // Read the parent chain into an array and read from top\n // down\n parentGroup = svgGroupWrapper;\n while (parentGroup) {\n parents.push(parentGroup);\n // Move up to the next parent group\n parentGroup = parentGroup.parentGroup;\n }\n // Ensure dynamically updating position when any parent\n // is translated\n parents.reverse().forEach(function (parentGroup) {\n const cls = attr(parentGroup.element, 'class');\n /**\n * Common translate setter for X and Y on the HTML\n * group. Reverted the fix for #6957 du to\n * positioning problems and offline export (#7254,\n * #7280, #7529)\n * @private\n * @param {*} value\n * @param {string} key\n */\n function translateSetter(value, key) {\n parentGroup[key] = value;\n if (key === 'translateX') {\n htmlGroupStyle.left = value + 'px';\n }\n else {\n htmlGroupStyle.top = value + 'px';\n }\n parentGroup.doTransform = true;\n }\n // Create a HTML div and append it to the parent div\n // to emulate the SVG group structure\n const parentGroupStyles = parentGroup.styles || {};\n htmlGroup =\n parentGroup.div =\n parentGroup.div || createElement('div', cls ? { className: cls } : void 0, {\n position: 'absolute',\n left: (parentGroup.translateX || 0) + 'px',\n top: (parentGroup.translateY || 0) + 'px',\n display: parentGroup.display,\n opacity: parentGroup.opacity,\n visibility: parentGroup.visibility\n // the top group is appended to container\n }, htmlGroup || container);\n // Shortcut\n const htmlGroupStyle = htmlGroup.style;\n // Set listeners to update the HTML div's position\n // whenever the SVG group position is changed.\n extend(parentGroup, {\n // (#7287) Pass htmlGroup to use\n // the related group\n classSetter: (function (htmlGroup) {\n return function (value) {\n this.element.setAttribute('class', value);\n htmlGroup.className = value;\n };\n }(htmlGroup)),\n // Extend the parent group's css function by\n // updating the shadow div counterpart with the same\n // style.\n css: function (styles) {\n wrapper.css.call(parentGroup, styles);\n [\n // #6794\n 'cursor',\n // #5595, #18821\n 'pointerEvents'\n ].forEach((prop) => {\n if (styles[prop]) {\n htmlGroupStyle[prop] = styles[prop];\n }\n });\n return parentGroup;\n },\n on: function () {\n if (parents[0].div) { // #6418\n wrapper.on.apply({\n element: parents[0].div,\n onEvents: parentGroup.onEvents\n }, arguments);\n }\n return parentGroup;\n },\n translateXSetter: translateSetter,\n translateYSetter: translateSetter\n });\n if (!parentGroup.addedSetters) {\n addSetters(parentGroup);\n }\n // Apply pre-existing style\n parentGroup.css(parentGroupStyles);\n });\n }\n }\n else {\n htmlGroup = container;\n }\n htmlGroup.appendChild(element);\n wrapper.added = true;\n if (wrapper.alignOnAdd) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n return wrapper;\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLRenderer;\n });\n _registerModule(_modules, 'Core/Axis/AxisDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var AxisDefaults;\n (function (AxisDefaults) {\n /* *\n *\n * Constants\n *\n * */\n /**\n * The X axis or category axis. Normally this is the horizontal axis,\n * though if the chart is inverted this is the vertical axis. In case of\n * multiple axes, the xAxis node is an array of configuration objects.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden, but it is used behind the scenes to\n * control features like zooming and panning. Zooming is in effect the same\n * as setting the extremes of one of the exes.\n *\n * @type {*|Array<*>}\n * @optionparent xAxis\n */\n AxisDefaults.defaultXAxisOptions = {\n /**\n * When using multiple axis, the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks, as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy, it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in an Axis options are set to false,\n * then the `alignTicks ` will be disabled for the Axis.\n *\n * Disabled for logarithmic axes.\n *\n * @product highcharts highstock gantt\n */\n alignTicks: true,\n /**\n * Whether to allow decimals in this axis' ticks. When counting\n * integers, like persons or hits on a web page, decimals should\n * be avoided in the labels. By default, decimals are allowed on small\n * scale axes.\n *\n * @see [minTickInterval](#xAxis.minTickInterval)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-true/\n * True by default\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-false/\n * False\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 2.0\n */\n allowDecimals: void 0,\n /**\n * When using an alternate grid color, a band is painted across the\n * plot area between every other grid line.\n *\n * @sample {highcharts} highcharts/yaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n * @sample {highstock} stock/xaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n *\n * @type {Highcharts.ColorType}\n * @apioption xAxis.alternateGridColor\n */\n /**\n * An array defining breaks in the axis, the sections defined will be\n * left out and all the points shifted closer to each other.\n *\n * @productdesc {highcharts}\n * Requires that the broken-axis.js module is loaded.\n *\n * @sample {highcharts} highcharts/axisbreak/break-simple/\n * Simple break\n * @sample {highcharts|highstock} highcharts/axisbreak/break-visualized/\n * Advanced with callback\n * @sample {highstock} stock/demo/intraday-breaks/\n * Break on nights and weekends\n *\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks\n */\n /**\n * A number indicating how much space should be left between the start\n * and the end of the break. The break size is given in axis units,\n * so for instance on a `datetime` axis, a break size of 3600000 would\n * indicate the equivalent of an hour.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.breakSize\n */\n /**\n * The point where the break starts.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.from\n */\n /**\n * Defines an interval after which the break appears again. By default\n * the breaks do not repeat.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.repeat\n */\n /**\n * The point where the break ends.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.to\n */\n /**\n * If categories are present for the xAxis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also\n * be extracted by giving each point a [name](#series.data) and setting\n * axis [type](#xAxis.type) to `category`. However, if you have multiple\n * series, best practice remains defining the `categories` array.\n *\n * Example: `categories: ['Apples', 'Bananas', 'Oranges']`\n *\n * @sample {highcharts} highcharts/demo/line-labels/\n * With\n * @sample {highcharts} highcharts/xaxis/categories/\n * Without\n *\n * @type {Array}\n * @product highcharts gantt\n * @apioption xAxis.categories\n */\n /**\n * The highest allowed value for automatically computed axis extremes.\n *\n * @see [floor](#xAxis.floor)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.ceiling\n */\n /**\n * A class name that opens for styling the axis by CSS, especially in\n * Highcharts styled mode. The class name is applied to group elements\n * for the grid, axis elements and labels.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/css/axis/\n * Multiple axes with separate styling\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.className\n */\n /**\n * Configure a crosshair that follows either the mouse pointer or the\n * hovered point.\n *\n * In styled mode, the crosshairs are styled in the\n * `.highcharts-crosshair`, `.highcharts-crosshair-thin` or\n * `.highcharts-xaxis-category` classes.\n *\n * @productdesc {highstock}\n * In Highcharts stock, by default, the crosshair is enabled on the\n * X axis and disabled on the Y axis.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Crosshair on both axes, with y axis label\n * @sample {highmaps} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n *\n * @declare Highcharts.AxisCrosshairOptions\n * @type {boolean|*}\n * @default false\n * @since 4.1\n * @apioption xAxis.crosshair\n */\n /**\n * The value on a perpendicular axis where this axis should cross. This\n * is typically used on mathematical plots where the axes cross at 0.\n * When `crossing` is set, space will not be reserved at the sides of\n * the chart for axis labels and title, so those may be clipped. In this\n * case it is better to place the axes without the `crossing` option.\n *\n * @type {number}\n * @sample highcharts/xaxis/crossing\n * Function plot with axes crossing at 0\n * @since 11.0.1\n * @apioption xAxis.crossing\n */\n /**\n * A class name for the crosshair, especially as a hook for styling.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.crosshair.className\n */\n /**\n * The color of the crosshair. Defaults to `#cccccc` for numeric and\n * datetime axes, and `rgba(204,214,235,0.25)` for category axes, where\n * the crosshair by default highlights the whole category.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {Highcharts.ColorType}\n * @default #cccccc\n * @since 4.1\n * @apioption xAxis.crosshair.color\n */\n /**\n * The dash style for the crosshair. See\n * [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n * for possible values.\n *\n * @sample {highcharts|highmaps} highcharts/xaxis/crosshair-dotted/\n * Dotted crosshair\n * @sample {highstock} stock/xaxis/crosshair-dashed/\n * Dashed X axis crosshair\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 4.1\n * @apioption xAxis.crosshair.dashStyle\n */\n /**\n * A label on the axis next to the crosshair.\n *\n * In styled mode, the label is styled with the\n * `.highcharts-crosshair-label` class.\n *\n * @sample {highstock} stock/xaxis/crosshair-label/\n * Crosshair labels\n * @sample {highstock} highcharts/css/crosshair-label/\n * Style mode\n *\n * @declare Highcharts.AxisCrosshairLabelOptions\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label\n */\n /**\n * Alignment of the label compared to the axis. Defaults to `\"left\"` for\n * right-side axes, `\"right\"` for left-side axes and `\"center\"` for\n * horizontal axes.\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.align\n */\n /**\n * The background color for the label. Defaults to the related series\n * color, or `#666666` if that is not available.\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.backgroundColor\n */\n /**\n * The border color for the crosshair label\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderColor\n */\n /**\n * The border corner radius of the crosshair label.\n *\n * @type {number}\n * @default 3\n * @since 2.1.10\n * @product highstock\n * @apioption xAxis.crosshair.label.borderRadius\n */\n /**\n * The border width for the crosshair label.\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderWidth\n */\n /**\n * Flag to enable crosshair's label.\n *\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Enabled label for yAxis' crosshair\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.enabled\n */\n /**\n * A format string for the crosshair label. Defaults to `{value}` for\n * numeric axes and `{value:%b %d, %Y}` for datetime axes.\n *\n * @type {string}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.format\n */\n /**\n * Formatter function for the label text.\n *\n * @type {Highcharts.XAxisCrosshairLabelFormatterCallbackFunction}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.formatter\n */\n /**\n * Padding inside the crosshair label.\n *\n * @type {number}\n * @default 8\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.padding\n */\n /**\n * The shape to use for the label box.\n *\n * @type {string}\n * @default callout\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.shape\n */\n /**\n * Text styles for the crosshair label.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"white\", \"fontWeight\": \"normal\", \"fontSize\": \"11px\", \"textAlign\": \"center\"}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.style\n */\n /**\n * Whether the crosshair should snap to the point or follow the pointer\n * independent of points.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/crosshair-snap-false/\n * True by default\n * @sample {highmaps} maps/demo/latlon-advanced/\n * Snap is false\n *\n * @type {boolean}\n * @default true\n * @since 4.1\n * @apioption xAxis.crosshair.snap\n */\n /**\n * The pixel width of the crosshair. Defaults to 1 for numeric or\n * datetime axes, and for one category width for category axes.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highstock} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {number}\n * @default 1\n * @since 4.1\n * @apioption xAxis.crosshair.width\n */\n /**\n * The Z index of the crosshair. Higher Z indices allow drawing the\n * crosshair on top of the series or behind the grid lines.\n *\n * @type {number}\n * @default 2\n * @since 4.1\n * @apioption xAxis.crosshair.zIndex\n */\n /**\n * Whether to pan axis. If `chart.panning` is enabled, the option\n * allows to disable panning on an individual axis.\n */\n panningEnabled: true,\n /**\n * The Z index for the axis group.\n */\n zIndex: 2,\n /**\n * Whether to zoom axis. If `chart.zoomType` is set, the option allows\n * to disable zooming on an individual axis.\n *\n * @sample {highcharts} highcharts/xaxis/zoomenabled/\n * Zoom enabled is false\n */\n zoomEnabled: true,\n /**\n * For a datetime axis, the scale will automatically adjust to the\n * appropriate unit. This member gives the default string\n * representations used for each unit. For intermediate values,\n * different units may be used, for example the `day` unit can be used\n * on midnight and `hour` unit be used for intermediate values on the\n * same axis.\n *\n * For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * Defaults to:\n * ```js\n * {\n * millisecond: '%H:%M:%S.%L',\n * second: '%H:%M:%S',\n * minute: '%H:%M',\n * hour: '%H:%M',\n * day: '%e. %b',\n * week: '%e. %b',\n * month: '%b \\'%y',\n * year: '%Y'\n * }\n * ```\n *\n * @sample {highcharts} highcharts/xaxis/datetimelabelformats/\n * Different day format on X axis\n * @sample {highstock} stock/xaxis/datetimelabelformats/\n * More information in x axis labels\n *\n * @declare Highcharts.AxisDateTimeLabelFormatsOptions\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n millisecond: {\n main: '%H:%M:%S.%L',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n second: {\n main: '%H:%M:%S',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n minute: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n hour: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n day: {\n main: '%e %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n week: {\n main: '%e %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n month: {\n main: '%b \\'%y'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n year: {\n main: '%Y'\n }\n },\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `endOnTick` is always `false` when the navigator\n * is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False\n *\n * @since 1.2.0\n */\n endOnTick: false,\n /**\n * Event handlers for the axis.\n *\n * @type {*}\n * @apioption xAxis.events\n */\n /**\n * An event fired after the breaks have rendered.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-event/\n * AfterBreak Event\n *\n * @type {Highcharts.AxisEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @apioption xAxis.events.afterBreaks\n */\n /**\n * As opposed to the `setExtremes` event, this event fires after the\n * final min and max values are computed and corrected for `minRange`.\n *\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function, containing\n * common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in axis values. The actual data extremes are found in\n * `event.dataMin` and `event.dataMax`.\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 2.3\n * @context Highcharts.Axis\n * @apioption xAxis.events.afterSetExtremes\n */\n /**\n * An event fired when a break from this axis occurs on a point.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-visualized/\n * Visualization of a Break\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointBreak\n */\n /**\n * An event fired when a point falls inside a break from this axis.\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @product highcharts highstock gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointInBreak\n */\n /**\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function,\n * containing common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in data values. When an axis is zoomed all the way out from\n * the \"Reset zoom\" button, `event.min` and `event.max` are null, and\n * the new extremes are set based on `this.dataMin` and `this.dataMax`.\n *\n * @sample {highstock} stock/xaxis/events-setextremes/\n * Log new extremes on x axis\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Axis\n * @apioption xAxis.events.setExtremes\n */\n /**\n * The lowest allowed value for automatically computed axis extremes.\n *\n * @see [ceiling](#yAxis.ceiling)\n *\n * @sample {highcharts} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n * @sample {highstock} stock/demo/lazy-loading/\n * Prevent negative stock price on Y axis\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.floor\n */\n /**\n * The dash or dot style of the grid lines. For possible values, see\n * [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/gridlinedashstyle/\n * Long dashes\n * @sample {highstock} stock/xaxis/gridlinedashstyle/\n * Long dashes\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n gridLineDashStyle: 'Solid',\n /**\n * The Z index of the grid lines.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/gridzindex/\n * A Z index of 4 renders the grid above the graph\n *\n * @product highcharts highstock gantt\n */\n gridZIndex: 1,\n /**\n * An id for the axis. This can be used after render time to get\n * a pointer to the axis object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/xaxis/id/\n * Get the object\n * @sample {highstock} stock/xaxis/id/\n * Get the object\n *\n * @type {string}\n * @since 1.2.0\n * @apioption xAxis.id\n */\n /**\n * The axis labels show the number or category for each tick.\n *\n * Since v8.0.0: Labels are animated in categorized x-axis with\n * updating data if `tickInterval` and `step` is set to 1.\n *\n * @productdesc {highmaps}\n * X and Y axis labels are by default disabled in Highmaps, but the\n * functionality is inherited from Highcharts and used on `colorAxis`,\n * and can be enabled on X and Y axes too.\n */\n labels: {\n /**\n * What part of the string the given position is anchored to.\n * If `left`, the left side of the string is at the axis position.\n * Can be one of `\"left\"`, `\"center\"` or `\"right\"`. Defaults to\n * an intelligent guess based on which side of the chart the axis\n * is on and the rotation of the label.\n *\n * @see [reserveSpace](#xAxis.labels.reserveSpace)\n *\n * @sample {highcharts} highcharts/xaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/xaxis/labels-align-right/\n * Right\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.labels.align\n */\n /**\n * Whether to allow the axis labels to overlap.\n * When false, overlapping labels are hidden.\n *\n * @sample {highcharts} highcharts/xaxis/labels-allowoverlap-true/\n * X axis labels overlap enabled\n *\n * @type {boolean}\n * @default false\n * @apioption xAxis.labels.allowOverlap\n *\n */\n /**\n * For horizontal axes, the allowed degrees of label rotation\n * to prevent overlapping labels. If there is enough space,\n * labels are not rotated. As the chart gets narrower, it\n * will start rotating the labels -45 degrees, then remove\n * every second label and try again with rotations 0 and -45 etc.\n * Set it to `undefined` to disable rotation, which will\n * cause the labels to word-wrap if possible. Defaults to `[-45]``\n * on bottom and top axes, `undefined` on left and right axes.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-default/\n * Default auto rotation of 0 or -45\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-0-90/\n * Custom graded auto rotation\n *\n * @type {Array}\n * @default undefined\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.labels.autoRotation\n */\n autoRotation: void 0,\n /**\n * When each category width is more than this many pixels, we don't\n * apply auto rotation. Instead, we lay out the axis label with word\n * wrap. A lower limit makes sense when the label contains multiple\n * short words that don't extend the available horizontal space for\n * each label.\n *\n * @sample {highcharts} highcharts/xaxis/labels-autorotationlimit/\n * Lower limit\n *\n * @since 4.1.5\n * @product highcharts gantt\n */\n autoRotationLimit: 80,\n /**\n * The label's pixel distance from the perimeter of the plot area.\n * On cartesian charts, this is overridden if the `labels.y` setting\n * is set.\n *\n * * On polar charts, if it's a percentage string, it is interpreted\n * the same as [series.radius](#plotOptions.gauge.radius), so the\n * label can be aligned under the gauge's shape.\n *\n * @sample {highcharts} highcharts/yaxis/labels-distance/\n * Polar chart, labels centered under the arc\n *\n * @type {number}\n * @product highcharts gantt\n */\n distance: 15,\n /**\n * Enable or disable the axis labels.\n *\n * @sample {highcharts} highcharts/xaxis/labels-enabled/\n * X axis labels disabled\n * @sample {highstock} stock/xaxis/labels-enabled/\n * X axis labels disabled\n *\n */\n enabled: true,\n /**\n * A format string for the axis label. The context is available as\n * format string variables. For example, you can use `{text}` to\n * insert the default formatted text. The recommended way of adding\n * units for the label is using `text`, for example `{text} km`.\n *\n * To add custom numeric or datetime formatting, use `{value}` with\n * formatting, for example `{value:.1f}` or `{value:%Y-%m-%d}`.\n *\n * See\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for more examples of formatting.\n *\n * The default value is not specified due to the dynamic\n * nature of the default implementation.\n *\n * @sample {highcharts|highstock} highcharts/yaxis/labels-format/\n * Add units to Y axis label\n * @sample {highcharts} highcharts/xaxis/labels-format-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-format-custom/\n * Custom number format\n *\n * @type {string}\n * @since 3.0\n * @apioption xAxis.labels.format\n */\n /**\n * Callback JavaScript function to format the label. The value\n * is given by `this.value`. Additional properties for `this` are\n * `axis`, `chart`, `isFirst`, `isLast` and `text` which holds the\n * value of the default formatter.\n *\n * Defaults to a built in function returning a formatted string\n * depending on whether the axis is `category`, `datetime`,\n * `numeric` or other.\n *\n * @sample {highcharts} highcharts/xaxis/labels-formatter-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-formatter-extended/\n * Modified numeric labels\n * @sample {highstock} stock/xaxis/labels-formatter/\n * Added units on Y axis\n *\n * @type {Highcharts.AxisLabelsFormatterCallbackFunction}\n * @apioption xAxis.labels.formatter\n */\n /**\n * The number of pixels to indent the labels per level in a treegrid\n * axis.\n *\n * @sample gantt/treegrid-axis/demo\n * Indentation 10px by default.\n * @sample gantt/treegrid-axis/indentation-0px\n * Indentation set to 0px.\n *\n * @product gantt\n */\n indentation: 10,\n /**\n * Horizontal axis only. When `staggerLines` is not set,\n * `maxStaggerLines` defines how many lines the axis is allowed to\n * add to automatically avoid overlapping X labels. Set to `1` to\n * disable overlap detection.\n *\n * @deprecated\n * @type {number}\n * @default 5\n * @since 1.3.3\n * @apioption xAxis.labels.maxStaggerLines\n */\n /**\n * How to handle overflowing labels on horizontal axis. If set to\n * `\"allow\"`, it will not be aligned at all. By default it\n * `\"justify\"` labels inside the chart area. If there is room to\n * move it, it will be aligned to the edge, else it will be removed.\n *\n * @since 2.2.5\n * @validvalue [\"allow\", \"justify\"]\n */\n overflow: 'justify',\n /**\n * The pixel padding for axis labels, to ensure white space between\n * them.\n *\n * @product highcharts gantt\n */\n padding: 5,\n /**\n * Whether to reserve space for the labels. By default, space is\n * reserved for the labels in these cases:\n *\n * * On all horizontal axes.\n * * On vertical axes if `label.align` is `right` on a left-side\n * axis or `left` on a right-side axis.\n * * On vertical axes if `label.align` is `center`.\n *\n * This can be turned off when for example the labels are rendered\n * inside the plot area instead of outside.\n *\n * @see [labels.align](#xAxis.labels.align)\n *\n * @sample {highcharts} highcharts/xaxis/labels-reservespace/\n * No reserved space, labels inside plot\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {boolean}\n * @since 4.1.10\n * @product highcharts highstock gantt\n * @apioption xAxis.labels.reserveSpace\n */\n reserveSpace: void 0,\n /**\n * Rotation of the labels in degrees. When `undefined`, the\n * `autoRotation` option takes precedence.\n *\n * @sample {highcharts} highcharts/xaxis/labels-rotation/\n * X axis labels rotated 90°\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.labels.rotation\n */\n rotation: void 0,\n /**\n * Horizontal axes only. The number of lines to spread the labels\n * over to make room or tighter labels. 0 disables staggering.\n *\n * @sample {highcharts} highcharts/xaxis/labels-staggerlines/\n * Show labels over two lines\n * @sample {highstock} stock/xaxis/labels-staggerlines/\n * Show labels over two lines\n *\n * @since 2.1\n */\n staggerLines: 0,\n /**\n * To show only every _n_'th label on the axis, set the step to _n_.\n * Setting the step to 2 shows every other label.\n *\n * By default, when 0, the step is calculated automatically to avoid\n * overlap. To prevent this, set it to 1\\. This usually only\n * happens on a category axis, and is often a sign that you have\n * chosen the wrong axis type.\n *\n * Read more at\n * [Axis docs](https://www.highcharts.com/docs/chart-concepts/axes)\n * => What axis should I use?\n *\n * @sample {highcharts} highcharts/xaxis/labels-step/\n * Showing only every other axis label on a categorized\n * x-axis\n * @sample {highcharts} highcharts/xaxis/labels-step-auto/\n * Auto steps on a category axis\n *\n * @since 2.1\n */\n step: 0,\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n */\n useHTML: false,\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis. Overrides the `labels.distance` option.\n *\n * @type {number}\n * @apioption xAxis.labels.x\n */\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. Overrides the `labels.distance` option.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * X axis labels placed on grid lines\n *\n * @type {number}\n * @apioption xAxis.labels.y\n */\n /**\n * The Z index for the axis labels.\n */\n zIndex: 7,\n /**\n * CSS styles for the label. Use `whiteSpace: 'nowrap'` to prevent\n * wrapping of category labels. Use `textOverflow: 'none'` to\n * prevent ellipsis (dots).\n *\n * In styled mode, the labels are styled with the\n * `.highcharts-axis-labels` class.\n *\n * @sample {highcharts} highcharts/xaxis/labels-style/\n * Red X axis labels\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '0.8em'\n }\n },\n /**\n * The left position as the horizontal axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the plot width, offset from plot area\n * left.\n *\n * @sample {highcharts} highcharts/xaxis/axis-position-properties\n * Different axis position properties\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.left\n */\n /**\n * The top position as the vertical axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the plot height, offset from plot area top.\n *\n * @sample {highcharts} highcharts/xaxis/axis-position-properties\n * Different axis position properties\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.top\n */\n /**\n * Index of another axis that this axis is linked to. When an axis is\n * linked to a master axis, it will take the same extremes as\n * the master, but as assigned by min or max or by setExtremes.\n * It can be used to show additional info, or to ease reading the\n * chart by duplicating the scales.\n *\n * @sample {highcharts} highcharts/xaxis/linkedto/\n * Different string formats of the same date\n * @sample {highcharts} highcharts/yaxis/linkedto/\n * Y values on both sides\n *\n * @type {number}\n * @since 2.0.2\n * @product highcharts highstock gantt\n * @apioption xAxis.linkedTo\n */\n /**\n * The maximum value of the axis. If `null`, the max value is\n * automatically calculated.\n *\n * If the [endOnTick](#yAxis.endOnTick) option is true, the `max` value\n * might be rounded up.\n *\n * If a [tickAmount](#yAxis.tickAmount) is set, the axis may be extended\n * beyond the set max in order to reach the given number of ticks. The\n * same may happen in a chart with multiple axes, determined by [chart.\n * alignTicks](#chart), where a `tickAmount` is applied internally.\n *\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/xaxis/min-max/\n * Fixed min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.max\n */\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding/\n * Max padding of 0.25 on y axis\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n */\n maxPadding: 0.01,\n /**\n * Deprecated. Use `minRange` instead.\n *\n * @deprecated\n * @type {number}\n * @product highcharts highstock\n * @apioption xAxis.maxZoom\n */\n /**\n * The minimum value of the axis. If `null` the min value is\n * automatically calculated.\n *\n * If the [startOnTick](#yAxis.startOnTick) option is true (default),\n * the `min` value might be rounded down.\n *\n * The automatically calculated minimum value is also affected by\n * [floor](#yAxis.floor), [softMin](#yAxis.softMin),\n * [minPadding](#yAxis.minPadding), [minRange](#yAxis.minRange)\n * as well as [series.threshold](#plotOptions.series.threshold)\n * and [series.softThreshold](#plotOptions.series.softThreshold).\n *\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/xaxis/min-max/\n * Set min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.min\n */\n /**\n * The dash or dot style of the minor grid lines. For possible values,\n * see [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n * @sample {highstock} stock/xaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n minorGridLineDashStyle: 'Solid',\n /**\n * Specific tick interval in axis units for the minor ticks. On a linear\n * axis, if `\"auto\"`, the minor tick interval is calculated as a fifth\n * of the tickInterval. If `null` or `undefined`, minor ticks are not\n * shown.\n *\n * On logarithmic axes, the unit is the power of the value. For example,\n * setting the minorTickInterval to 1 puts one tick on each of 0.1, 1,\n * 10, 100 etc. Setting the minorTickInterval to 0.1 produces 9 ticks\n * between 1 and 10, 10 and 100 etc.\n *\n * If user settings dictate minor ticks to become too dense, they don't\n * make sense, and will be ignored to prevent performance problems.\n *\n * @sample {highcharts} highcharts/yaxis/minortickinterval-null/\n * Null by default\n * @sample {highcharts} highcharts/yaxis/minortickinterval-5/\n * 5 units\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log-auto/\n * \"auto\"\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log/\n * 0.1\n * @sample {highstock} stock/demo/basic-line/\n * Null by default\n * @sample {highstock} stock/xaxis/minortickinterval-auto/\n * \"auto\"\n *\n * @type {number|string|null}\n * @apioption xAxis.minorTickInterval\n */\n /**\n * The pixel length of the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minorticklength/\n * 10px on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * 10px on Y axis\n */\n minorTickLength: 2,\n /**\n * The position of the minor tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/yaxis/minortickposition-outside/\n * Outside by default\n * @sample {highcharts} highcharts/yaxis/minortickposition-inside/\n * Inside\n * @sample {highstock} stock/xaxis/minorticks/\n * Inside\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n minorTickPosition: 'outside',\n /**\n * Enable or disable minor ticks. The interval between the minor ticks\n * can be controlled either by the\n * [minorTicksPerMajor](#xAxis.minorTicksPerMajor) setting, or as an\n * absolute [minorTickInterval](#xAxis.minorTickInterval) value.\n *\n * On a logarithmic axis, minor ticks are laid out based on a best\n * guess, attempting to enter an approximate number of minor ticks\n * between each major tick based on\n * [minorTicksPerMajor](#xAxis.minorTicksPerMajor).\n *\n * Prior to v6.0.0, ticks were enabled in auto layout by setting\n * `minorTickInterval` to `\"auto\"`.\n *\n * @productdesc {highcharts} On axes using\n * [categories](#xAxis.categories), minor ticks are not supported.\n *\n * @sample {highcharts} highcharts/yaxis/minorticks-true/ Enabled on\n * linear Y axis\n *\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @apioption xAxis.minorTicks\n */\n /**\n * The number of minor ticks per major tick. Works for `linear`,\n * `logarithmic` and `datetime` axes.\n *\n * @sample {highcharts} highcharts/yaxis/minortickspermajor/\n * 2 minor ticks per major tick on Y axis\n *\n * @type {number}\n */\n minorTicksPerMajor: 5,\n /**\n * The pixel width of the minor tick mark.\n *\n * @sample {highcharts} highcharts/yaxis/minortickwidth/\n * 3px width\n * @sample {highstock} stock/xaxis/minorticks/\n * 1px width\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.minorTickWidth\n */\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a min extreme\n * is set using `axis.setExtremes()`, the minPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.01,\n /**\n * The minimum range to display on this axis. The entire axis will not\n * be allowed to span over a smaller interval than this. For example,\n * for a datetime axis the main unit is milliseconds. If minRange is\n * set to 3600000, you can't zoom in more than to one hour.\n *\n * The default minRange for the x axis is five times the smallest\n * interval between any of the data points.\n *\n * On a logarithmic axis, the unit for the minimum range is the power.\n * So a minRange of 1 means that the axis can be zoomed to 10-100,\n * 100-1000, 1000-10000 etc.\n *\n * **Note**: The `minPadding`, `maxPadding`, `startOnTick` and\n * `endOnTick` settings also affect how the extremes of the axis\n * are computed.\n *\n * @sample {highcharts} highcharts/xaxis/minrange/\n * Minimum range of 5\n * @sample {highstock} stock/xaxis/minrange/\n * Max zoom of 6 months overrides user selections\n *\n * @type {number}\n * @apioption xAxis.minRange\n */\n /**\n * The minimum tick interval allowed in axis values. For example on\n * zooming in on an axis with daily data, this can be used to prevent\n * the axis from showing hours. Defaults to the closest distance between\n * two points on the axis.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption xAxis.minTickInterval\n */\n /**\n * The distance in pixels from the plot area to the axis line.\n * A positive offset moves the axis with it's line, labels and ticks\n * away from the plot area. This is typically used when two or more\n * axes are displayed on the same side of the plot. With multiple\n * axes the offset is dynamically adjusted to avoid collision, this\n * can be overridden by setting offset explicitly.\n *\n * @sample {highcharts} highcharts/yaxis/offset/\n * Y axis offset of 70\n * @sample {highcharts} highcharts/yaxis/offset-centered/\n * Axes positioned in the center of the plot\n * @sample {highstock} stock/xaxis/offset/\n * Y axis offset by 70 px\n *\n * @type {number}\n */\n offset: void 0,\n /**\n * Whether to display the axis on the opposite side of the normal. The\n * normal is on the left side for vertical axes and bottom for\n * horizontal, so the opposite sides will be right and top respectively.\n * This is typically used with dual or multiple axes.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @default {highcharts|highstock|highmaps} false\n * @default {gantt} true\n */\n opposite: false,\n /**\n * In an ordinal axis, the points are equally spaced in the chart\n * regardless of the actual time or x distance between them. This means\n * that missing data periods (e.g. nights or weekends for a stock chart)\n * will not take up space in the chart.\n * Having `ordinal: false` will show any gaps created by the `gapSize`\n * setting proportionate to their duration.\n *\n * In stock charts the X axis is ordinal by default, unless\n * the boost module is used and at least one of the series' data length\n * exceeds the [boostThreshold](#series.line.boostThreshold).\n *\n * For an ordinal axis, `minPadding` and `maxPadding` are ignored. Use\n * [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highstock} stock/xaxis/ordinal-true/\n * True by default\n * @sample {highstock} stock/xaxis/ordinal-false/\n * False\n *\n * @see [overscroll](#xAxis.overscroll)\n *\n * @type {boolean}\n * @default true\n * @since 1.1\n * @product highstock\n * @apioption xAxis.ordinal\n */\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * `xAxis.maxPadding`, but value is set in milliseconds. Can be set for\n * both main `xAxis` and the navigator's `xAxis`.\n *\n * @sample {highstock} stock/xaxis/overscroll/\n * One minute overscroll with live data\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @product highstock\n * @apioption xAxis.overscroll\n */\n /**\n * Refers to the index in the [panes](#panes) array. Used for circular\n * gauges and polar charts. When the option is not set then first pane\n * will be used.\n *\n * @sample highcharts/demo/gauge-vu-meter\n * Two gauges with different center\n *\n * @type {number}\n * @product highcharts\n * @apioption xAxis.pane\n */\n /**\n * The zoomed range to display when only defining one or none of `min`\n * or `max`. For example, to show the latest month, a range of one month\n * can be set.\n *\n * @sample {highstock} stock/xaxis/range/\n * Setting a zoomed range when the rangeSelector is disabled\n *\n * @type {number}\n * @product highstock\n * @apioption xAxis.range\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin. If the chart is inverted, the x axis is reversed by\n * default.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default undefined\n * @apioption xAxis.reversed\n */\n reversed: void 0,\n /**\n * This option determines how stacks should be ordered within a group.\n * For example reversed xAxis also reverses stacks, so first series\n * comes last in a group. To keep order like for non-reversed xAxis\n * enable this option.\n *\n * @sample {highcharts} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n * @sample {highstock} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n *\n * @since 6.1.1\n * @product highcharts highstock\n */\n reversedStacks: false,\n /**\n * An optional scrollbar to display on the X axis in response to\n * limiting the minimum and maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar are\n * replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/heatmap-scrollbars/\n * Heatmap with both scrollbars\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @apioption xAxis.scrollbar\n */\n /**\n * Whether to show the axis line and title when the axis has no data.\n *\n * @sample {highcharts} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n * @sample {highstock} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n *\n * @since 1.1\n */\n showEmpty: true,\n /**\n * Whether to show the first tick label.\n *\n * @sample {highcharts} highcharts/xaxis/showfirstlabel-false/\n * Set to false on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n */\n showFirstLabel: true,\n /**\n * Whether to show the last tick label. Defaults to `true` on cartesian\n * charts, and `false` on polar charts.\n *\n * @sample {highcharts} highcharts/xaxis/showlastlabel-true/\n * Set to true on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n *\n * @type {boolean}\n * @default undefined\n * @product highcharts highstock gantt\n */\n showLastLabel: true,\n /**\n * A soft maximum for the axis. If the series data maximum is less than\n * this, the axis will stay at this maximum, but if the series data\n * maximum is higher, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMin\n */\n /**\n * For datetime axes, this decides where to put the tick between weeks.\n * 0 = Sunday, 1 = Monday.\n *\n * @sample {highcharts} highcharts/xaxis/startofweek-monday/\n * Monday by default\n * @sample {highcharts} highcharts/xaxis/startofweek-sunday/\n * Sunday\n * @sample {highstock} stock/xaxis/startofweek-1\n * Monday by default\n * @sample {highstock} stock/xaxis/startofweek-0\n * Sunday\n *\n * @product highcharts highstock gantt\n */\n startOfWeek: 1,\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `minPadding` option to control the axis start.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `startOnTick` is always `false` when\n * the navigator is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n *\n * @since 1.2.0\n */\n startOnTick: false,\n /**\n * The amount of ticks to draw on the axis. This opens up for aligning\n * the ticks of multiple charts or panes within a chart. This option\n * overrides the `tickPixelInterval` option.\n *\n * This option only has an effect on linear axes. Datetime, logarithmic\n * or category axes are not affected.\n *\n * @sample {highcharts} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n * @sample {highstock} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.tickAmount\n */\n /**\n * The interval of the tick marks in axis units. When `undefined`, the\n * tick interval is computed to approximately follow the\n * [tickPixelInterval](#xAxis.tickPixelInterval) on linear and datetime\n * axes. On categorized axes, a `undefined` tickInterval will default to\n * 1, one category. Note that datetime axes are based on milliseconds,\n * so for example an interval of one day is expressed as\n * `24 * 3600 * 1000`.\n *\n * On logarithmic axes, the tickInterval is based on powers, so a\n * tickInterval of 1 means one tick on each of 0.1, 1, 10, 100 etc. A\n * tickInterval of 2 means a tick of 0.1, 10, 1000 etc. A tickInterval\n * of 0.2 puts a tick on 0.1, 0.2, 0.4, 0.6, 0.8, 1, 2, 4, 6, 8, 10, 20,\n * 40 etc.\n *\n *\n * If the tickInterval is too dense for labels to be drawn, Highcharts\n * may remove ticks.\n *\n * If the chart has multiple axes, the [alignTicks](#chart.alignTicks)\n * option may interfere with the `tickInterval` setting.\n *\n * @see [tickPixelInterval](#xAxis.tickPixelInterval)\n * @see [tickPositions](#xAxis.tickPositions)\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickinterval-5/\n * Tick interval of 5 on a linear axis\n * @sample {highstock} stock/xaxis/tickinterval/\n * Tick interval of 0.01 on Y axis\n *\n * @type {number}\n * @apioption xAxis.tickInterval\n */\n /**\n * The pixel length of the main tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/ticklength/\n * 20 px tick length on the X axis\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n */\n tickLength: 10,\n /**\n * If tickInterval is `null` this option sets the approximate pixel\n * interval of the tick marks. Not applicable to categorized axis.\n *\n * The tick interval is also influenced by the [minTickInterval](\n * #xAxis.minTickInterval) option, that, by default prevents ticks from\n * being denser than the data points.\n *\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpixelinterval-50/\n * 50 px on X axis\n * @sample {highstock} stock/xaxis/tickpixelinterval/\n * 200 px on X axis\n */\n tickPixelInterval: 100,\n /**\n * For categorized axes only. If `on` the tick mark is placed in the\n * center of the category, if `between` the tick mark is placed between\n * categories. The default is `between` if the `tickInterval` is 1, else\n * `on`.\n *\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-between/\n * \"between\" by default\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-on/\n * \"on\"\n *\n * @product highcharts gantt\n * @validvalue [\"on\", \"between\"]\n */\n tickmarkPlacement: 'between',\n /**\n * The position of the major tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/xaxis/tickposition-outside/\n * \"outside\" by default\n * @sample {highcharts} highcharts/xaxis/tickposition-inside/\n * \"inside\"\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n tickPosition: 'outside',\n /**\n * A callback function returning array defining where the ticks are\n * laid out on the axis. This overrides the default behaviour of\n * [tickPixelInterval](#xAxis.tickPixelInterval) and [tickInterval](\n * #xAxis.tickInterval). The automatic tick positions are accessible\n * through `this.tickPositions` and can be modified by the callback.\n *\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Highcharts.AxisTickPositionerCallbackFunction}\n * @apioption xAxis.tickPositioner\n */\n /**\n * An array defining where the ticks are laid out on the axis. This\n * overrides the default behaviour of [tickPixelInterval](\n * #xAxis.tickPixelInterval) and [tickInterval](#xAxis.tickInterval).\n *\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Array}\n * @apioption xAxis.tickPositions\n */\n /**\n * The pixel width of the major tick marks. Defaults to 0 on category\n * axes, otherwise 1.\n *\n * In styled mode, the stroke width is given in the `.highcharts-tick`\n * class, but in order for the element to be generated on category axes,\n * the option must be explicitly set to 1.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/\n * 10 px width\n * @sample {highcharts} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n * @sample {highstock} highcharts/css/axis-grid/\n * Styled mode\n *\n * @type {undefined|number}\n * @default {highstock} 1\n * @default {highmaps} 0\n * @apioption xAxis.tickWidth\n */\n /**\n * The axis title, showing next to the axis line.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden by default, but adding an axis title\n * is still possible. X axis and Y axis titles will appear at the bottom\n * and left by default.\n */\n title: {\n /**\n * Alignment of the title relative to the axis values. Possible\n * values are \"low\", \"middle\" or \"high\".\n *\n * @sample {highcharts} highcharts/xaxis/title-align-low/\n * \"low\"\n * @sample {highcharts} highcharts/xaxis/title-align-center/\n * \"middle\" by default\n * @sample {highcharts} highcharts/xaxis/title-align-high/\n * \"high\"\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the Y axis title on top of the axis\n * @sample {highstock} stock/xaxis/title-align/\n * Aligned to \"high\" value\n *\n * @type {Highcharts.AxisTitleAlignValue}\n */\n align: 'middle',\n /**\n * Deprecated. Set the `text` to `undefined` to disable the title.\n *\n * @deprecated\n * @type {boolean}\n * @product highcharts\n * @apioption xAxis.title.enabled\n */\n /**\n * The pixel distance between the axis labels or line and the title.\n * Defaults to 0 for horizontal axes, 10 for vertical\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @apioption xAxis.title.margin\n */\n /**\n * The distance of the axis title from the axis line. By default,\n * this distance is computed from the offset width of the labels,\n * the labels' distance from the axis and the title's margin.\n * However when the offset option is set, it overrides all this.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the axis title on top of the axis\n * @sample {highstock} highcharts/yaxis/title-offset/\n * Place the axis title on top of the Y axis\n *\n * @type {number}\n * @since 2.2.0\n * @apioption xAxis.title.offset\n */\n /**\n * Whether to reserve space for the title when laying out the axis.\n *\n * @type {boolean}\n * @default true\n * @since 5.0.11\n * @product highcharts highstock gantt\n * @apioption xAxis.title.reserveSpace\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 0,\n /**\n * The actual text of the axis title. It can contain basic HTML tags\n * like `b`, `i` and `span` with style.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n * @sample {highstock} stock/xaxis/title-text/\n * Titles for both axes\n *\n * @type {string|null}\n * @apioption xAxis.title.text\n */\n /**\n * Alignment of the text, can be `\"left\"`, `\"right\"` or `\"center\"`.\n * Default alignment depends on the\n * [title.align](xAxis.title.align):\n *\n * Horizontal axes:\n * - for `align` = `\"low\"`, `textAlign` is set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"`, `textAlign` is set to `right`\n *\n * Vertical axes:\n * - for `align` = `\"low\"` and `opposite` = `true`, `textAlign` is\n * set to `right`\n * - for `align` = `\"low\"` and `opposite` = `false`, `textAlign` is\n * set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"` and `opposite` = `true` `textAlign` is\n * set to `left`\n * - for `align` = `\"high\"` and `opposite` = `false` `textAlign` is\n * set to `right`\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.title.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the axis title.\n *\n * @product highcharts highstock gantt\n */\n useHTML: false,\n /**\n * Horizontal pixel offset of the title position.\n *\n * @since 4.1.6\n * @product highcharts highstock gantt\n */\n x: 0,\n /**\n * Vertical pixel offset of the title position.\n *\n * @product highcharts highstock gantt\n */\n y: 0,\n /**\n * CSS styles for the title. If the title text is longer than the\n * axis length, it will wrap to multiple lines by default. This can\n * be customized by setting `textOverflow: 'ellipsis'`, by\n * setting a specific `width` or by setting `whiteSpace: 'nowrap'`.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-title` class.\n *\n * @sample {highcharts} highcharts/xaxis/title-style/\n * Red\n * @sample {highcharts} highcharts/css/axis/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */,\n /** @internal */\n fontSize: '0.8em'\n }\n },\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`\n * or `category`. In a datetime axis, the numbers are given in\n * milliseconds, and tick marks are placed on appropriate values like\n * full hours or days. In a category axis, the\n * [point names](#series.line.data.name) of the chart's series are used\n * for categories, if not a [categories](#xAxis.categories) array is\n * defined.\n *\n * @sample {highcharts} highcharts/xaxis/type-linear/\n * Linear\n * @sample {highcharts} highcharts/yaxis/type-log/\n * Logarithmic\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/xaxis/type-log-both/\n * Logarithmic on two axes\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n *\n * @type {Highcharts.AxisTypeValue}\n * @product highcharts gantt\n */\n type: 'linear',\n /**\n * If there are multiple axes on the same side of the chart, the pixel\n * margin between the axes. Defaults to 0 on vertical axes, 15 on\n * horizontal axes.\n *\n * @type {number}\n * @since 7.0.3\n * @apioption xAxis.margin\n */\n /**\n * Applies only when the axis `type` is `category`. When `uniqueNames`\n * is true, points are placed on the X axis according to their names.\n * If the same point name is repeated in the same or another series,\n * the point is placed on the same X position as other points of the\n * same name. When `uniqueNames` is false, the points are laid out in\n * increasing X positions regardless of their names, and the X axis\n * category will take the name of the last point in each position.\n *\n * @sample {highcharts} highcharts/xaxis/uniquenames-true/\n * True by default\n * @sample {highcharts} highcharts/xaxis/uniquenames-false/\n * False\n *\n * @since 4.2.7\n * @product highcharts gantt\n */\n uniqueNames: true,\n /**\n * Datetime axis only. An array determining what time intervals the\n * ticks are allowed to fall on. Each array item is an array where the\n * first value is the time unit and the second value another array of\n * allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n * 'millisecond', // unit name\n * [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n * 'second',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'minute',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'hour',\n * [1, 2, 3, 4, 6, 8, 12]\n * ], [\n * 'day',\n * [1, 2]\n * ], [\n * 'week',\n * [1, 2]\n * ], [\n * 'month',\n * [1, 2, 3, 4, 6]\n * ], [\n * 'year',\n * null\n * ]]\n * ```\n *\n * @sample {highcharts} highcharts/xaxis/units/\n * Axis units demonstrated\n *\n * @type {Array|null)>>}\n * @product highcharts highstock gantt\n * @apioption xAxis.units\n */\n /**\n * Whether axis, including axis title, line, ticks and labels, should\n * be visible.\n *\n * @since 4.1.9\n * @product highcharts highstock gantt\n */\n visible: true,\n /**\n * Color of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-minor-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #f2f2f2\n */\n minorGridLineColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * Width of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinewidth/\n * 2px lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinewidth/\n * 2px lines from Y axis\n */\n minorGridLineWidth: 1,\n /**\n * Color for the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minortickcolor/\n * Black tick marks on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * Black tick marks on Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #999999\n */\n minorTickColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The color of the line marking the axis itself.\n *\n * In styled mode, the line stroke is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A red line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linecolor/\n * A red line on X axis\n *\n * @type {Highcharts.ColorType}\n */\n lineColor: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * The width of the line marking the axis itself.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A 1px line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linewidth/\n * A 2px line on X axis\n *\n * @default {highcharts|highstock} 1\n * @default {highmaps} 0\n */\n lineWidth: 1,\n /**\n * Color of the grid lines extending the ticks across the plot area.\n *\n * In styled mode, the stroke is given in the `.highcharts-grid-line`\n * class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the grid lines are hidden by default.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinecolor/\n * Green lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinecolor/\n * Green lines\n *\n * @type {Highcharts.ColorType}\n * @default #e6e6e6\n */\n gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The width of the grid lines extending the ticks across the plot area.\n * Defaults to 1 on the Y axis and 0 on the X axis, except for 3d\n * charts.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinewidth/\n * 2px lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinewidth/\n * 2px lines\n *\n * @type {number}\n * @apioption xAxis.gridLineWidth\n */\n gridLineWidth: void 0,\n /**\n * The height as the vertical axis. If it's a number, it is\n * interpreted as pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the total plot height.\n *\n * @sample {highcharts} highcharts/xaxis/axis-position-properties\n * Different axis position properties\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.height\n */\n /**\n * The width as the horizontal axis. If it's a number, it is interpreted\n * as pixels.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the total plot width.\n *\n * @sample {highcharts} highcharts/xaxis/axis-position-properties\n * Different axis position properties\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.width\n */\n /**\n * Color for the main tick marks.\n *\n * In styled mode, the stroke is given in the `.highcharts-tick`\n * class.\n *\n * @sample {highcharts} highcharts/xaxis/tickcolor/\n * Red ticks on X axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @type {Highcharts.ColorType}\n */\n tickColor: \"#333333\" /* Palette.neutralColor80 */\n // tickWidth: 1\n };\n /**\n * The Y axis or value axis. Normally this is the vertical axis,\n * though if the chart is inverted this is the horizontal axis.\n * In case of multiple axes, the yAxis node is an array of\n * configuration objects.\n *\n * See [the Axis object](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @excluding currentDateIndicator,ordinal,overscroll\n * @optionparent yAxis\n */\n AxisDefaults.defaultYAxisOptions = {\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`,\n * `category` or `treegrid`. Defaults to `treegrid` for Gantt charts,\n * `linear` for other chart types.\n *\n * In a datetime axis, the numbers are given in milliseconds, and tick\n * marks are placed on appropriate values, like full hours or days. In a\n * category or treegrid axis, the [point names](#series.line.data.name)\n * of the chart's series are used for categories, if a\n * [categories](#xAxis.categories) array is not defined.\n *\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n * @sample {gantt} gantt/treegrid-axis/demo\n * Treegrid axis\n *\n * @type {Highcharts.AxisTypeValue}\n * @default {highcharts} linear\n * @default {gantt} treegrid\n * @product highcharts gantt\n * @apioption yAxis.type\n */\n /**\n * The height of the Y axis. If it's a number, it is interpreted as\n * pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the total plot height.\n *\n * @see [yAxis.top](#yAxis.top)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.height\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the maximum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max colors\n *\n * @type {Highcharts.ColorType}\n * @default #003399\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.maxColor\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the minimum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max color\n *\n * @type {Highcharts.ColorType}\n * @default #e6ebf5\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.minColor\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} true\n * @apioption yAxis.reversed\n */\n /**\n * If `true`, the first series in a stack will be drawn on top in a\n * positive, non-reversed Y axis. If `false`, the first series is in\n * the base of the stack.\n *\n * @sample {highcharts} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n * @sample {highstock} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n *\n * @type {boolean}\n * @default true\n * @since 3.0.10\n * @product highcharts highstock\n * @apioption yAxis.reversedStacks\n */\n reversedStacks: true,\n /**\n * Solid gauge series only. Color stops for the solid gauge. Use this\n * in cases where a linear gradient between a `minColor` and `maxColor`\n * is not sufficient. The stops is an array of tuples, where the first\n * item is a float between 0 and 1 assigning the relative position in\n * the gradient, and the second item is the color.\n *\n * For solid gauges, the Y axis also inherits the concept of\n * [data classes](https://api.highcharts.com/highmaps#colorAxis.dataClasses)\n * from the Highmaps color axis.\n *\n * @sample {highcharts} highcharts/demo/gauge-solid/\n * Gauge with stops\n *\n * @see [minColor](#yAxis.minColor)\n * @see [maxColor](#yAxis.maxColor)\n *\n * @type {Array>}\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.stops\n */\n /**\n * The pixel width of the major tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/ 10 px width\n * @sample {highstock} stock/xaxis/ticks/ Formatted ticks on X axis\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption yAxis.tickWidth\n */\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n */\n endOnTick: true,\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `maxPadding`,\n * so if the data is tangent to the threshold, `maxPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding-02/\n * Max padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n maxPadding: 0.05,\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `minPadding`,\n * so if the data is tangent to the threshold, `minPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.05,\n /**\n * @productdesc {highstock}\n * In Highcharts Stock 1.x, the Y axis was placed\n * on the left side by default.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @type {boolean}\n * @default {highstock} true\n * @default {highcharts} false\n * @product highstock highcharts gantt\n * @apioption yAxis.opposite\n */\n /**\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n */\n tickPixelInterval: 72,\n /**\n * Whether to show the last tick label.\n *\n * @productdesc {highcharts|gantt}\n * Defaults to `true` on cartesian charts, and `false` on polar charts.\n *\n * @productdesc {highstock}\n * Defaults to `true` for categorized yAxis and `false` for other types\n * of yAxis.\n *\n * @default undefined\n */\n showLastLabel: true,\n /**\n * @extends xAxis.labels\n */\n labels: {\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. For polar and radial axis consider the use\n * of the [distance](#yAxis.labels.distance) option.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @default {highcharts} 3\n * @default {highstock} -2\n * @default {highmaps} 3\n * @apioption yAxis.labels.y\n */\n /**\n * What part of the string the given position is anchored to. Can\n * be one of `\"left\"`, `\"center\"` or `\"right\"`. The exact position\n * also depends on the `labels.x` setting.\n *\n * Angular gauges and solid gauges defaults to `\"center\"`.\n * Solid gauges with two labels have additional option `\"auto\"`\n * for automatic horizontal and vertical alignment.\n *\n * @sample {highcharts} highcharts/yaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge labels auto aligned\n *\n * @type {Highcharts.AlignValue}\n * @default {highstock} right\n * @apioption yAxis.labels.align\n */\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis. Defaults to -15 for left axis, 15 for\n * right axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n */\n x: void 0\n },\n /**\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.max\n */\n /**\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.min\n */\n /**\n * An optional scrollbar to display on the Y axis in response to\n * limiting the minimum an maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar\n * are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Scrollbar on the Y axis\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @excluding height\n * @apioption yAxis.scrollbar\n */\n /**\n * Enable the scrollbar on the Y axis.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Enabled on Y axis\n *\n * @type {boolean}\n * @default false\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.enabled\n */\n /**\n * Pixel margin between the scrollbar and the axis elements.\n *\n * @type {number}\n * @default 10\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.margin\n */\n /* eslint-disable highcharts/doclet-apioption-last */\n /**\n * Defines the position of the scrollbar. By default, it is positioned\n * on the opposite of the main axis (right side of the chart).\n * However, in the case of RTL languages could be set to `false`\n * which positions the scrollbar on the left.\n *\n * Works only for vertical axes.\n * This means yAxis in a non-inverted chart and xAxis in the inverted.\n *\n * @sample stock/yaxis/scrollbar-opposite/\n * A scrollbar not on the opposite side\n *\n * @type {boolean}\n * @default true\n * @since 9.3.0\n *\n * @apioption yAxis.scrollbar.opposite\n * @apioption xAxis.scrollbar.opposite\n *\n */\n /* eslint-enable highcharts/doclet-apioption-last */\n /**\n * Whether to show the scrollbar when it is fully zoomed out at max\n * range. Setting it to `false` on the Y axis makes the scrollbar stay\n * hidden until the user zooms in, like common in browsers.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.showFull\n */\n /**\n * The width of a vertical scrollbar or height of a horizontal\n * scrollbar. Defaults to 20 on touch devices.\n *\n * @type {number}\n * @default 14\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.size\n */\n /**\n * Z index of the scrollbar elements.\n *\n * @type {number}\n * @default 3\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.zIndex\n */\n /**\n * A soft maximum for the axis. If the series data maximum is less\n * than this, the axis will stay at this maximum, but if the series\n * data maximum is higher, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMin\n */\n /**\n * Defines the horizontal alignment of the stack total label. Can be one\n * of `\"left\"`, `\"center\"` or `\"right\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-left/\n * Aligned to the left\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-center/\n * Aligned in center\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-right/\n * Aligned to the right\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.align\n */\n /**\n * A format string for the data label. Available variables are the same\n * as for `formatter`.\n *\n * @type {string}\n * @default {total}\n * @since 3.0.2\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.format\n */\n /**\n * Rotation of the labels in degrees.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-rotation/\n * Labels rotated 45°\n *\n * @type {number}\n * @default 0\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.rotation\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed with regards to the stack, `textAlign`\n * determines how the text is aligned against its anchor point. Possible\n * values are `\"left\"`, `\"center\"` and `\"right\"`. The default value is\n * calculated at runtime and depends on orientation and whether the\n * stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-textalign-left/\n * Label in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.useHTML\n */\n /**\n * Defines the vertical alignment of the stack total label. Can be one\n * of `\"top\"`, `\"middle\"` or `\"bottom\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-top/\n * Vertically aligned top\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-middle/\n * Vertically aligned middle\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-bottom/\n * Vertically aligned bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.verticalAlign\n */\n /**\n * The x position offset of the label relative to the left of the\n * stacked bar. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-x/\n * Stack total labels with x offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.x\n */\n /**\n * The y position offset of the label relative to the tick position\n * on the axis. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-y/\n * Stack total labels with y offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.y\n */\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `maxPadding` option to control the axis start.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n startOnTick: true,\n title: {\n /**\n * The pixel distance between the axis labels and the title.\n * Positive values are outside the axis line, negative are inside.\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @default 40\n * @apioption yAxis.title.margin\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 270,\n /**\n * The actual text of the axis title. Horizontal texts can contain\n * HTML, but rotated texts are painted using vector techniques and\n * must be clean text. The Y axis title is disabled by setting the\n * `text` option to `undefined`.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n *\n * @type {string|null}\n * @default {highcharts} Values\n * @default {highstock} undefined\n * @product highcharts highstock gantt\n */\n text: 'Values'\n },\n /**\n * The top position of the Y axis. If it's a number, it is interpreted\n * as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the plot height, offset from plot area top.\n *\n * @see [yAxis.height](#yAxis.height)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.top\n */\n /**\n * The stack labels show the total value for each bar in a stacked\n * column or bar chart. The label will be placed on top of positive\n * columns and below negative columns. In case of an inverted column\n * chart or a bar chart the label is placed to the right of positive\n * bars and to the left of negative bars.\n *\n * @product highcharts\n */\n stackLabels: {\n /**\n * Enable or disable the initial animation when a series is\n * displayed for the `stackLabels`. The animation can also be set as\n * a configuration object. Please note that this option only\n * applies to the initial animation.\n * For other animations, see [chart.animation](#chart.animation)\n * and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n * @type {boolean|Partial}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds.\n * Set to `0` renders stackLabel immediately.\n * As `undefined` inherits defer time from the [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation.defer\n */\n /**\n * Allow the stack labels to overlap.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-allowoverlap-false/\n * Default false\n *\n * @since 5.0.13\n * @product highcharts\n */\n allowOverlap: false,\n /**\n * The background color or gradient for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.backgroundColor\n */\n /**\n * The border color for the stack label. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderColor\n */\n /**\n * The border radius in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderRadius\n */\n /**\n * The border width in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderWidth\n */\n /**\n * Enable or disable the stack total labels.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled/\n * Enabled stack total labels\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled-waterfall/\n * Enabled stack labels in waterfall chart\n *\n * @since 2.1.5\n * @product highcharts\n */\n enabled: false,\n /**\n * Whether to hide stack labels that are outside the plot area.\n * By default, the stack label is moved\n * inside the plot area according to the\n * [overflow](/highcharts/#yAxis/stackLabels/overflow)\n * option.\n *\n * @type {boolean}\n * @since 7.1.3\n */\n crop: true,\n /**\n * How to handle stack total labels that flow outside the plot area.\n * The default is set to `\"justify\"`,\n * which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display stack labels outside the plot area,\n * set `crop` to `false` and `overflow` to `\"allow\"`.\n *\n * @sample highcharts/yaxis/stacklabels-overflow/\n * Stack labels flows outside the plot area.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @since 7.1.3\n */\n overflow: 'justify',\n /* eslint-disable valid-jsdoc */\n /**\n * Callback JavaScript function to format the label. The value is\n * given by `this.total`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-formatter/\n * Added units to stack total value\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 2.1.5\n * @product highcharts\n */\n formatter: function () {\n const { numberFormatter } = this.axis.chart;\n /* eslint-enable valid-jsdoc */\n return numberFormatter(this.total || 0, -1);\n },\n /**\n * CSS styles for the label.\n *\n * In styled mode, the styles are set in the\n * `.highcharts-stack-label` class.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-style/\n * Red stack total labels\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1.5\n * @product highcharts\n */\n style: {\n /** @internal */\n color: \"#000000\" /* Palette.neutralColor100 */,\n /** @internal */\n fontSize: '0.7em',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n textOutline: '1px contrast'\n }\n },\n gridLineWidth: 1,\n lineWidth: 0\n // tickWidth: 0\n };\n /**\n * The Z axis or depth axis for 3D plots.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @sample {highcharts} highcharts/3d/scatter-zaxis-categories/\n * Z-Axis with Categories\n * @sample {highcharts} highcharts/3d/scatter-zaxis-grid/\n * Z-Axis with styling\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @since 5.0.0\n * @product highcharts\n * @excluding breaks, crosshair, height, left, lineColor, lineWidth,\n * nameToX, showEmpty, top, width\n * @apioption zAxis\n */\n // This variable extends the defaultOptions for left axes.\n AxisDefaults.defaultLeftAxisOptions = {\n title: {\n rotation: 270\n }\n };\n // This variable extends the defaultOptions for right axes.\n AxisDefaults.defaultRightAxisOptions = {\n title: {\n rotation: 90\n }\n };\n // This variable extends the defaultOptions for bottom axes.\n AxisDefaults.defaultBottomAxisOptions = {\n labels: {\n autoRotation: [-45]\n // overflow: undefined,\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n // This variable extends the defaultOptions for top axes.\n AxisDefaults.defaultTopAxisOptions = {\n labels: {\n autoRotation: [-45]\n // overflow: undefined\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n })(AxisDefaults || (AxisDefaults = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return AxisDefaults;\n });\n _registerModule(_modules, 'Core/Foundation.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { addEvent, isFunction, objectEach, removeEvent } = U;\n /* *\n *\n * Class Namespace\n *\n * */\n var Foundation;\n (function (Foundation) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Register event options. If an event handler is set on the options, it\n * should be subject to Chart.update, Axis.update and Series.update. This is\n * contrary to general handlers that are set directly using addEvent either\n * on the class or on the instance. #6538, #6943, #10861.\n * @private\n */\n function registerEventOptions(component, options) {\n // A lookup over those events that are added by _options_ (not\n // programmatically). These are updated through .update()\n component.eventOptions = component.eventOptions || {};\n // Register event listeners\n objectEach(options.events, function (event, eventType) {\n // If event does not exist, or is changed by the .update()\n // function\n if (component.eventOptions[eventType] !== event) {\n // Remove existing if set by option\n if (component.eventOptions[eventType]) {\n removeEvent(component, eventType, component.eventOptions[eventType]);\n delete component.eventOptions[eventType];\n }\n if (isFunction(event)) {\n component.eventOptions[eventType] = event;\n addEvent(component, eventType, event, {\n order: 0 // #14080 fire those events as firsts\n });\n }\n }\n });\n }\n Foundation.registerEventOptions = registerEventOptions;\n })(Foundation || (Foundation = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return Foundation;\n });\n _registerModule(_modules, 'Core/Axis/Tick.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (F, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { deg2rad } = H;\n const { clamp, correctFloat, defined, destroyObjectProperties, extend, fireEvent, isNumber, merge, objectEach, pick } = U;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Tick class.\n *\n * @class\n * @name Highcharts.Tick\n *\n * @param {Highcharts.Axis} axis\n * The axis of the tick.\n *\n * @param {number} pos\n * The position of the tick on the axis in terms of axis values.\n *\n * @param {string} [type]\n * The type of tick, either 'minor' or an empty string\n *\n * @param {boolean} [noLabel=false]\n * Whether to disable the label or not. Defaults to false.\n *\n * @param {Object} [parameters]\n * Optional parameters for the tick.\n */\n class Tick {\n /* *\n *\n * Constructors\n *\n * */\n constructor(axis, pos, type, noLabel, parameters) {\n this.isNew = true;\n this.isNewLabel = true;\n /**\n * The related axis of the tick.\n * @name Highcharts.Tick#axis\n * @type {Highcharts.Axis}\n */\n this.axis = axis;\n /**\n * The logical position of the tick on the axis in terms of axis values.\n * @name Highcharts.Tick#pos\n * @type {number}\n */\n this.pos = pos;\n /**\n * The tick type, which can be `\"minor\"`, or an empty string.\n * @name Highcharts.Tick#type\n * @type {string}\n */\n this.type = type || '';\n this.parameters = parameters || {};\n /**\n * The mark offset of the tick on the axis. Usually `undefined`, numeric\n * for grid axes.\n * @name Highcharts.Tick#tickmarkOffset\n * @type {number|undefined}\n */\n this.tickmarkOffset = this.parameters.tickmarkOffset;\n this.options = this.parameters.options;\n fireEvent(this, 'init');\n if (!type && !noLabel) {\n this.addLabel();\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Write the tick label.\n *\n * @private\n * @function Highcharts.Tick#addLabel\n */\n addLabel() {\n const tick = this, axis = tick.axis, options = axis.options, chart = axis.chart, categories = axis.categories, log = axis.logarithmic, names = axis.names, pos = tick.pos, labelOptions = pick(tick.options && tick.options.labels, options.labels), tickPositions = axis.tickPositions, isFirst = pos === tickPositions[0], isLast = pos === tickPositions[tickPositions.length - 1], animateLabels = (!labelOptions.step || labelOptions.step === 1) &&\n axis.tickInterval === 1, tickPositionInfo = tickPositions.info;\n let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;\n // The context value\n let value = this.parameters.category || (categories ?\n pick(categories[pos], names[pos], pos) :\n pos);\n if (log && isNumber(value)) {\n value = correctFloat(log.lin2log(value));\n }\n // Set the datetime label format. If a higher rank is set for this\n // position, use that. If not, use the general format.\n if (axis.dateTime) {\n if (tickPositionInfo) {\n dateTimeLabelFormats = chart.time.resolveDTLFormat(options.dateTimeLabelFormats[(!options.grid &&\n tickPositionInfo.higherRanks[pos]) ||\n tickPositionInfo.unitName]);\n dateTimeLabelFormat = dateTimeLabelFormats.main;\n }\n else if (isNumber(value)) { // #1441\n dateTimeLabelFormat = axis.dateTime.getXDateFormat(value, options.dateTimeLabelFormats ||\n {});\n }\n }\n // set properties for access in render method\n /**\n * True if the tick is the first one on the axis.\n * @name Highcharts.Tick#isFirst\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isFirst = isFirst;\n /**\n * True if the tick is the last one on the axis.\n * @name Highcharts.Tick#isLast\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isLast = isLast;\n // Get the string\n const ctx = {\n axis,\n chart,\n dateTimeLabelFormat: dateTimeLabelFormat,\n isFirst,\n isLast,\n pos,\n tick: tick,\n tickPositionInfo,\n value\n };\n // Fire an event that allows modifying the context for use in\n // `labels.format` and `labels.formatter`.\n fireEvent(this, 'labelFormat', ctx);\n // Label formatting. When `labels.format` is given, we first run the\n // defaultFormatter and append the result to the context as `text`.\n // Handy for adding prefix or suffix while keeping default number\n // formatting.\n const labelFormatter = (ctx) => {\n if (labelOptions.formatter) {\n return labelOptions.formatter.call(ctx, ctx);\n }\n if (labelOptions.format) {\n ctx.text = axis.defaultLabelFormatter.call(ctx, ctx);\n return F.format(labelOptions.format, ctx, chart);\n }\n return axis.defaultLabelFormatter.call(ctx, ctx);\n };\n const str = labelFormatter.call(ctx, ctx);\n // Set up conditional formatting based on the format list if existing.\n const list = dateTimeLabelFormats && dateTimeLabelFormats.list;\n if (list) {\n tick.shortenLabel = function () {\n for (i = 0; i < list.length; i++) {\n extend(ctx, { dateTimeLabelFormat: list[i] });\n label.attr({\n text: labelFormatter.call(ctx, ctx)\n });\n if (label.getBBox().width <\n axis.getSlotWidth(tick) - 2 *\n labelOptions.padding) {\n return;\n }\n }\n label.attr({\n text: ''\n });\n };\n }\n else {\n // #15692\n tick.shortenLabel = void 0;\n }\n // Call only after first render\n if (animateLabels && axis._addedPlotLB) {\n tick.moveLabel(str, labelOptions);\n }\n // First call\n if (!defined(label) && !tick.movedLabel) {\n /**\n * The rendered text label of the tick.\n * @name Highcharts.Tick#label\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.label = label = tick.createLabel({ x: 0, y: 0 }, str, labelOptions);\n // Base value to detect change for new calls to getBBox\n tick.rotation = 0;\n // update\n }\n else if (label && label.textStr !== str && !animateLabels) {\n // When resetting text, also reset the width if dynamically set\n // (#8809)\n if (label.textWidth &&\n !labelOptions.style.width &&\n !label.styles.width) {\n label.css({ width: null });\n }\n label.attr({ text: str });\n label.textPxLength = label.getBBox().width;\n }\n }\n /**\n * Render and return the label of the tick.\n *\n * @private\n * @function Highcharts.Tick#createLabel\n */\n createLabel(xy, str, labelOptions) {\n const axis = this.axis, chart = axis.chart, label = defined(str) && labelOptions.enabled ?\n chart.renderer\n .text(str, xy.x, xy.y, labelOptions.useHTML)\n .add(axis.labelGroup) :\n null;\n // Un-rotated length\n if (label) {\n // Without position absolute, IE export sometimes is wrong\n if (!chart.styledMode) {\n label.css(merge(labelOptions.style));\n }\n label.textPxLength = label.getBBox().width;\n }\n return label;\n }\n /**\n * Destructor for the tick prototype\n *\n * @private\n * @function Highcharts.Tick#destroy\n */\n destroy() {\n destroyObjectProperties(this, this.axis);\n }\n /**\n * Gets the x and y positions for ticks in terms of pixels.\n *\n * @private\n * @function Highcharts.Tick#getPosition\n *\n * @param {boolean} horiz\n * Whether the tick is on an horizontal axis or not.\n *\n * @param {number} tickPos\n * Position of the tick.\n *\n * @param {number} tickmarkOffset\n * Tickmark offset for all ticks.\n *\n * @param {boolean} [old]\n * Whether the axis has changed or not.\n *\n * @return {Highcharts.PositionObject}\n * The tick position.\n *\n * @emits Highcharts.Tick#event:afterGetPosition\n */\n getPosition(horiz, tickPos, tickmarkOffset, old) {\n const axis = this.axis, chart = axis.chart, cHeight = (old && chart.oldChartHeight) || chart.chartHeight, pos = {\n x: horiz ?\n correctFloat(axis.translate(tickPos + tickmarkOffset, void 0, void 0, old) +\n axis.transB) :\n (axis.left +\n axis.offset +\n (axis.opposite ?\n (((old && chart.oldChartWidth) ||\n chart.chartWidth) -\n axis.right -\n axis.left) :\n 0)),\n y: horiz ?\n (cHeight -\n axis.bottom +\n axis.offset -\n (axis.opposite ? axis.height : 0)) :\n correctFloat(cHeight -\n axis.translate(tickPos + tickmarkOffset, void 0, void 0, old) -\n axis.transB)\n };\n // Chrome workaround for #10516\n pos.y = clamp(pos.y, -1e5, 1e5);\n fireEvent(this, 'afterGetPosition', { pos: pos });\n return pos;\n }\n /**\n * Get the x, y position of the tick label\n * @private\n */\n getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {\n const axis = this.axis, transA = axis.transA, reversed = ( // #7911\n axis.isLinked && axis.linkedParent ?\n axis.linkedParent.reversed :\n axis.reversed), staggerLines = axis.staggerLines, rotCorr = axis.tickRotCorr || { x: 0, y: 0 }, \n // Adjust for label alignment if we use reserveSpace: true (#5286)\n labelOffsetCorrection = (!horiz && !axis.reserveSpaceDefault ?\n -axis.labelOffset * (axis.labelAlign === 'center' ? 0.5 : 1) :\n 0), distance = labelOptions.distance, pos = {};\n let yOffset, line;\n if (axis.side === 0) {\n yOffset = label.rotation ? -distance : -label.getBBox().height;\n }\n else if (axis.side === 2) {\n yOffset = rotCorr.y + distance;\n }\n else {\n // #3140, #3140\n yOffset = Math.cos(label.rotation * deg2rad) *\n (rotCorr.y - label.getBBox(false, 0).height / 2);\n }\n if (defined(labelOptions.y)) {\n yOffset = axis.side === 0 && axis.horiz ?\n labelOptions.y + yOffset :\n labelOptions.y;\n }\n x = x +\n pick(labelOptions.x, [0, 1, 0, -1][axis.side] * distance) +\n labelOffsetCorrection +\n rotCorr.x -\n (tickmarkOffset && horiz ?\n tickmarkOffset * transA * (reversed ? -1 : 1) :\n 0);\n y = y + yOffset - (tickmarkOffset && !horiz ?\n tickmarkOffset * transA * (reversed ? 1 : -1) : 0);\n // Correct for staggered labels\n if (staggerLines) {\n line = (index / (step || 1) % staggerLines);\n if (axis.opposite) {\n line = staggerLines - line - 1;\n }\n y += line * (axis.labelOffset / staggerLines);\n }\n pos.x = x;\n pos.y = Math.round(y);\n fireEvent(this, 'afterGetLabelPosition', { pos: pos, tickmarkOffset: tickmarkOffset, index: index });\n return pos;\n }\n /**\n * Get the offset height or width of the label\n *\n * @private\n * @function Highcharts.Tick#getLabelSize\n */\n getLabelSize() {\n return this.label ?\n this.label.getBBox()[this.axis.horiz ? 'height' : 'width'] :\n 0;\n }\n /**\n * Extendible method to return the path of the marker\n * @private\n */\n getMarkPath(x, y, tickLength, tickWidth, horiz, renderer) {\n return renderer.crispLine([[\n 'M',\n x,\n y\n ], [\n 'L',\n x + (horiz ? 0 : -tickLength),\n y + (horiz ? tickLength : 0)\n ]], tickWidth);\n }\n /**\n * Handle the label overflow by adjusting the labels to the left and right\n * edge, or hide them if they collide into the neighbour label.\n *\n * @private\n * @function Highcharts.Tick#handleOverflow\n */\n handleOverflow(xy) {\n const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound = pick(axis.labelLeft, Math.min(axis.pos, spacing[3])), rightBound = pick(axis.labelRight, Math.max(!axis.isRadial ? axis.pos + axis.len : 0, chartWidth - spacing[1])), label = this.label, rotation = this.rotation, factor = {\n left: 0,\n center: 0.5,\n right: 1\n }[axis.labelAlign || label.attr('align')], labelWidth = label.getBBox().width, slotWidth = axis.getSlotWidth(tick), xCorrection = factor, css = {};\n let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;\n // Check if the label overshoots the chart spacing box. If it does, move\n // it. If it now overshoots the slotWidth, add ellipsis.\n if (!rotation && labelOptions.overflow === 'justify') {\n leftPos = pxPos - factor * labelWidth;\n rightPos = pxPos + (1 - factor) * labelWidth;\n if (leftPos < leftBound) {\n modifiedSlotWidth =\n xy.x + modifiedSlotWidth * (1 - factor) - leftBound;\n }\n else if (rightPos > rightBound) {\n modifiedSlotWidth =\n rightBound - xy.x + modifiedSlotWidth * factor;\n goRight = -1;\n }\n modifiedSlotWidth = Math.min(slotWidth, modifiedSlotWidth); // #4177\n if (modifiedSlotWidth < slotWidth && axis.labelAlign === 'center') {\n xy.x += (goRight *\n (slotWidth -\n modifiedSlotWidth -\n xCorrection * (slotWidth - Math.min(labelWidth, modifiedSlotWidth))));\n }\n // If the label width exceeds the available space, set a text width\n // to be picked up below. Also, if a width has been set before, we\n // need to set a new one because the reported labelWidth will be\n // limited by the box (#3938).\n if (labelWidth > modifiedSlotWidth ||\n (axis.autoRotation && (label.styles || {}).width)) {\n textWidth = modifiedSlotWidth;\n }\n // Add ellipsis to prevent rotated labels to be clipped against the edge\n // of the chart\n }\n else if (rotation < 0 &&\n pxPos - factor * labelWidth < leftBound) {\n textWidth = Math.round(pxPos / Math.cos(rotation * deg2rad) - leftBound);\n }\n else if (rotation > 0 &&\n pxPos + factor * labelWidth > rightBound) {\n textWidth = Math.round((chartWidth - pxPos) /\n Math.cos(rotation * deg2rad));\n }\n if (textWidth) {\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else {\n css.width = Math.floor(textWidth) + 'px';\n if (!(labelOptions.style || {}).textOverflow) {\n css.textOverflow = 'ellipsis';\n }\n label.css(css);\n }\n }\n }\n /**\n * Try to replace the label if the same one already exists.\n *\n * @private\n * @function Highcharts.Tick#moveLabel\n */\n moveLabel(str, labelOptions) {\n const tick = this, label = tick.label, axis = tick.axis;\n let moved = false, labelPos;\n if (label && label.textStr === str) {\n tick.movedLabel = label;\n moved = true;\n delete tick.label;\n }\n else { // Find a label with the same string\n objectEach(axis.ticks, function (currentTick) {\n if (!moved &&\n !currentTick.isNew &&\n currentTick !== tick &&\n currentTick.label &&\n currentTick.label.textStr === str) {\n tick.movedLabel = currentTick.label;\n moved = true;\n currentTick.labelPos = tick.movedLabel.xy;\n delete currentTick.label;\n }\n });\n }\n // Create new label if the actual one is moved\n if (!moved && (tick.labelPos || label)) {\n labelPos = tick.labelPos || label.xy;\n tick.movedLabel = tick.createLabel(labelPos, str, labelOptions);\n if (tick.movedLabel) {\n tick.movedLabel.attr({ opacity: 0 });\n }\n }\n }\n /**\n * Put everything in place\n *\n * @private\n * @param {number} index\n *\n * @param {boolean} [old]\n * Use old coordinates to prepare an animation into new position\n *\n * @param {number} [opacity]\n */\n render(index, old, opacity) {\n const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), xy = tick.getPosition(horiz, pos, tickmarkOffset, old), x = xy.x, y = xy.y, reverseCrisp = ((horiz && x === axis.pos + axis.len) ||\n (!horiz && y === axis.pos)) ? -1 : 1; // #1480, #1687\n const labelOpacity = pick(opacity, tick.label && tick.label.newOpacity, // #15528\n 1);\n opacity = pick(opacity, 1);\n this.isActive = true;\n // Create the grid line\n this.renderGridLine(old, opacity, reverseCrisp);\n // create the tick mark\n this.renderMark(xy, opacity, reverseCrisp);\n // the label is created on init - now move it into place\n this.renderLabel(xy, old, labelOpacity, index);\n tick.isNew = false;\n fireEvent(this, 'afterRender');\n }\n /**\n * Renders the gridLine.\n *\n * @private\n * @function Highcharts.Tick#renderGridLine\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the grid line\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n renderGridLine(old, opacity, reverseCrisp) {\n const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), renderer = axis.chart.renderer;\n let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;\n if (tick.type === 'minor') {\n gridLineWidth = options.minorGridLineWidth;\n gridLineColor = options.minorGridLineColor;\n dashStyle = options.minorGridLineDashStyle;\n }\n if (!gridLine) {\n if (!axis.chart.styledMode) {\n attribs.stroke = gridLineColor;\n attribs['stroke-width'] = gridLineWidth || 0;\n attribs.dashstyle = dashStyle;\n }\n if (!type) {\n attribs.zIndex = 1;\n }\n if (old) {\n opacity = 0;\n }\n /**\n * The rendered grid line of the tick.\n * @name Highcharts.Tick#gridLine\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.gridLine = gridLine = renderer.path()\n .attr(attribs)\n .addClass('highcharts-' + (type ? type + '-' : '') + 'grid-line')\n .add(axis.gridGroup);\n }\n if (gridLine) {\n gridLinePath = axis.getPlotLinePath({\n value: pos + tickmarkOffset,\n lineWidth: gridLine.strokeWidth() * reverseCrisp,\n force: 'pass',\n old: old,\n acrossPanes: false // #18025\n });\n // If the parameter 'old' is set, the current call will be followed\n // by another call, therefore do not do any animations this time\n if (gridLinePath) {\n gridLine[old || tick.isNew ? 'attr' : 'animate']({\n d: gridLinePath,\n opacity: opacity\n });\n }\n }\n }\n /**\n * Renders the tick mark.\n *\n * @private\n * @function Highcharts.Tick#renderMark\n * @param {Highcharts.PositionObject} xy The position vector of the mark\n * @param {number} opacity The opacity of the mark\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n renderMark(xy, opacity, reverseCrisp) {\n const tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1\n tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];\n let mark = tick.mark;\n const isNewMark = !mark;\n if (tickSize) {\n // negate the length\n if (axis.opposite) {\n tickSize[0] = -tickSize[0];\n }\n // First time, create it\n if (!mark) {\n /**\n * The rendered mark of the tick.\n * @name Highcharts.Tick#mark\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.mark = mark = renderer.path()\n .addClass('highcharts-' + (type ? type + '-' : '') + 'tick')\n .add(axis.axisGroup);\n if (!axis.chart.styledMode) {\n mark.attr({\n stroke: tickColor,\n 'stroke-width': tickWidth\n });\n }\n }\n mark[isNewMark ? 'attr' : 'animate']({\n d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth() * reverseCrisp, axis.horiz, renderer),\n opacity: opacity\n });\n }\n }\n /**\n * Renders the tick label.\n * Note: The label should already be created in init(), so it should only\n * have to be moved into place.\n *\n * @private\n * @function Highcharts.Tick#renderLabel\n * @param {Highcharts.PositionObject} xy The position vector of the label\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the label\n * @param {number} index The index of the tick\n */\n renderLabel(xy, old, opacity, index) {\n const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), x = xy.x, y = xy.y;\n let show = true;\n if (label && isNumber(x)) {\n label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);\n // Apply show first and show last. If the tick is both first and\n // last, it is a single centered tick, in which case we show the\n // label anyway (#2100).\n if ((tick.isFirst &&\n !tick.isLast &&\n !options.showFirstLabel) ||\n (tick.isLast &&\n !tick.isFirst &&\n !options.showLastLabel)) {\n show = false;\n // Handle label overflow and show or hide accordingly\n }\n else if (horiz &&\n !labelOptions.step &&\n !labelOptions.rotation &&\n !old &&\n opacity !== 0) {\n tick.handleOverflow(xy);\n }\n // apply step\n if (step && index % step) {\n // show those indices dividable by step\n show = false;\n }\n // Set the new position, and show or hide\n if (show && isNumber(xy.y)) {\n xy.opacity = opacity;\n label[tick.isNewLabel ? 'attr' : 'animate'](xy).show(true);\n tick.isNewLabel = false;\n }\n else {\n label.hide(); // #1338, #15863\n tick.isNewLabel = true;\n }\n }\n }\n /**\n * Replace labels with the moved ones to perform animation. Additionally\n * destroy unused labels.\n *\n * @private\n * @function Highcharts.Tick#replaceMovedLabel\n */\n replaceMovedLabel() {\n const tick = this, label = tick.label, axis = tick.axis;\n // Animate and destroy\n if (label && !tick.isNew) {\n label.animate({ opacity: 0 }, void 0, label.destroy);\n delete tick.label;\n }\n axis.isDirty = true;\n tick.label = tick.movedLabel;\n delete tick.movedLabel;\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Optional parameters for the tick.\n * @private\n * @interface Highcharts.TickParametersObject\n */ /**\n * Set category for the tick.\n * @name Highcharts.TickParametersObject#category\n * @type {string|undefined}\n */ /**\n * @name Highcharts.TickParametersObject#options\n * @type {Highcharts.Dictionary|undefined}\n */ /**\n * Set tickmarkOffset for the tick.\n * @name Highcharts.TickParametersObject#tickmarkOffset\n * @type {number|undefined}\n */\n /**\n * Additonal time tick information.\n *\n * @interface Highcharts.TimeTicksInfoObject\n * @extends Highcharts.TimeNormalizedObject\n */ /**\n * @name Highcharts.TimeTicksInfoObject#higherRanks\n * @type {Array}\n */ /**\n * @name Highcharts.TimeTicksInfoObject#totalRange\n * @type {number}\n */\n (''); // keeps doclets above in JS file\n\n return Tick;\n });\n _registerModule(_modules, 'Core/Axis/Axis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/AxisDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Utilities.js']], function (A, AxisDefaults, Color, D, F, H, Tick, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { animObject } = A;\n const { defaultOptions } = D;\n const { registerEventOptions } = F;\n const { deg2rad } = H;\n const { arrayMax, arrayMin, clamp, correctFloat, defined, destroyObjectProperties, erase, error, extend, fireEvent, isArray, isNumber, isString, merge, normalizeTickInterval, objectEach, pick, relativeLength, removeEvent, splat, syncTimeout } = U;\n const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, pick(axis.options.allowDecimals, \n // If the tick interval is greather than 0.5, avoid decimals, as\n // linear axes are often used to render discrete values (#3363). If\n // a tick amount is set, allow decimals by default, as it increases\n // the chances for a good fit.\n tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);\n /* *\n *\n * Class\n *\n * */\n /**\n * Create a new axis object. Called internally when instanciating a new chart or\n * adding axes by {@link Highcharts.Chart#addAxis}.\n *\n * A chart can have from 0 axes (pie chart) to multiples. In a normal, single\n * series cartesian chart, there is one X axis and one Y axis.\n *\n * The X axis or axes are referenced by {@link Highcharts.Chart.xAxis}, which is\n * an array of Axis objects. If there is only one axis, it can be referenced\n * through `chart.xAxis[0]`, and multiple axes have increasing indices. The same\n * pattern goes for Y axes.\n *\n * If you need to get the axes from a series object, use the `series.xAxis` and\n * `series.yAxis` properties. These are not arrays, as one series can only be\n * associated to one X and one Y axis.\n *\n * A third way to reference the axis programmatically is by `id`. Add an `id` in\n * the axis configuration options, and get the axis by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the axes are given in options.xAxis and\n * options.yAxis.\n *\n * @class\n * @name Highcharts.Axis\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n */\n class Axis {\n /* *\n *\n * Constructors\n *\n * */\n constructor(chart, userOptions) {\n this.alternateBands = void 0;\n this.bottom = void 0;\n this.chart = void 0;\n this.closestPointRange = void 0;\n this.coll = void 0;\n this.eventOptions = void 0;\n this.hasNames = void 0;\n this.hasVisibleSeries = void 0;\n this.height = void 0;\n this.isLinked = void 0;\n this.labelEdge = void 0; // @todo\n this.labelFormatter = void 0;\n this.left = void 0;\n this.len = void 0;\n this.max = void 0;\n this.maxLabelLength = void 0;\n this.min = void 0;\n this.minorTickInterval = void 0;\n this.minorTicks = void 0;\n this.minPixelPadding = void 0;\n this.names = void 0;\n this.offset = void 0;\n this.options = void 0;\n this.overlap = void 0;\n this.paddedTicks = void 0;\n this.plotLinesAndBands = void 0;\n this.plotLinesAndBandsGroups = void 0;\n this.pointRange = void 0;\n this.pointRangePadding = void 0;\n this.pos = void 0;\n this.positiveValuesOnly = void 0;\n this.right = void 0;\n this.series = void 0;\n this.side = void 0;\n this.tickAmount = void 0;\n this.tickInterval = void 0;\n this.tickmarkOffset = void 0;\n this.tickPositions = void 0;\n this.tickRotCorr = void 0;\n this.ticks = void 0;\n this.top = void 0;\n this.transA = void 0;\n this.transB = void 0;\n this.translationSlope = void 0;\n this.userOptions = void 0;\n this.visible = void 0;\n this.width = void 0;\n this.zoomEnabled = void 0;\n this.init(chart, userOptions);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Overrideable function to initialize the axis.\n *\n * @see {@link Axis}\n *\n * @function Highcharts.Axis#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterInit\n * @emits Highcharts.Axis#event:init\n */\n init(chart, userOptions) {\n const isXAxis = userOptions.isX, axis = this;\n /**\n * The Chart that the axis belongs to.\n *\n * @name Highcharts.Axis#chart\n * @type {Highcharts.Chart}\n */\n axis.chart = chart;\n /**\n * Whether the axis is horizontal.\n *\n * @name Highcharts.Axis#horiz\n * @type {boolean|undefined}\n */\n axis.horiz = chart.inverted && !axis.isZAxis ? !isXAxis : isXAxis;\n /**\n * Whether the axis is the x-axis.\n *\n * @name Highcharts.Axis#isXAxis\n * @type {boolean|undefined}\n */\n axis.isXAxis = isXAxis;\n /**\n * The collection where the axis belongs, for example `xAxis`, `yAxis`\n * or `colorAxis`. Corresponds to properties on Chart, for example\n * {@link Chart.xAxis}.\n *\n * @name Highcharts.Axis#coll\n * @type {string}\n */\n axis.coll = axis.coll || (isXAxis ? 'xAxis' : 'yAxis');\n fireEvent(this, 'init', { userOptions: userOptions });\n // Needed in setOptions\n axis.opposite = pick(userOptions.opposite, axis.opposite);\n /**\n * The side on which the axis is rendered. 0 is top, 1 is right, 2\n * is bottom and 3 is left.\n *\n * @name Highcharts.Axis#side\n * @type {number}\n */\n axis.side = pick(userOptions.side, axis.side, (axis.horiz ?\n (axis.opposite ? 0 : 2) : // top : bottom\n (axis.opposite ? 1 : 3)) // right : left\n );\n /**\n * Current options for the axis after merge of defaults and user's\n * options.\n *\n * @name Highcharts.Axis#options\n * @type {Highcharts.AxisOptions}\n */\n axis.setOptions(userOptions);\n const options = this.options, labelsOptions = options.labels, type = options.type;\n /**\n * User's options for this axis without defaults.\n *\n * @name Highcharts.Axis#userOptions\n * @type {Highcharts.AxisOptions}\n */\n axis.userOptions = userOptions;\n axis.minPixelPadding = 0;\n /**\n * Whether the axis is reversed. Based on the `axis.reversed`,\n * option, but inverted charts have reversed xAxis by default.\n *\n * @name Highcharts.Axis#reversed\n * @type {boolean}\n */\n axis.reversed = pick(options.reversed, axis.reversed);\n axis.visible = options.visible;\n axis.zoomEnabled = options.zoomEnabled;\n // Initial categories\n axis.hasNames =\n type === 'category' || options.categories === true;\n /**\n * If categories are present for the axis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also be extracted by giving each\n * point a name and setting axis type to `category`. However, if you\n * have multiple series, best practice remains defining the `categories`\n * array.\n *\n * @see [xAxis.categories](/highcharts/xAxis.categories)\n *\n * @name Highcharts.Axis#categories\n * @type {Array}\n * @readonly\n */\n axis.categories = options.categories || (axis.hasNames ? [] : void 0);\n if (!axis.names) { // Preserve on update (#3830)\n axis.names = [];\n axis.names.keys = {};\n }\n // Placeholder for plotlines and plotbands groups\n axis.plotLinesAndBandsGroups = {};\n // Shorthand types\n axis.positiveValuesOnly = !!axis.logarithmic;\n // Flag, if axis is linked to another axis\n axis.isLinked = defined(options.linkedTo);\n /**\n * List of major ticks mapped by postition on axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#ticks\n * @type {Highcharts.Dictionary}\n */\n axis.ticks = {};\n axis.labelEdge = [];\n /**\n * List of minor ticks mapped by position on the axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#minorTicks\n * @type {Highcharts.Dictionary}\n */\n axis.minorTicks = {};\n // List of plotLines/Bands\n axis.plotLinesAndBands = [];\n // Alternate bands\n axis.alternateBands = {};\n // Axis metrics\n axis.len = 0;\n axis.minRange = axis.userMinRange = options.minRange || options.maxZoom;\n axis.range = options.range;\n axis.offset = options.offset || 0;\n /**\n * The maximum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#max\n * @type {number|null}\n */\n axis.max = null;\n /**\n * The minimum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#min\n * @type {number|null}\n */\n axis.min = null;\n /**\n * The processed crosshair options.\n *\n * @name Highcharts.Axis#crosshair\n * @type {boolean|Highcharts.AxisCrosshairOptions}\n */\n const crosshair = pick(options.crosshair, splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);\n axis.crosshair = crosshair === true ? {} : crosshair;\n // Register. Don't add it again on Axis.update().\n if (chart.axes.indexOf(axis) === -1) { //\n if (isXAxis) { // #2713\n chart.axes.splice(chart.xAxis.length, 0, axis);\n }\n else {\n chart.axes.push(axis);\n }\n chart[axis.coll].push(axis);\n }\n /**\n * All series associated to the axis.\n *\n * @name Highcharts.Axis#series\n * @type {Array}\n */\n axis.series = axis.series || []; // populated by Series\n // Reversed axis\n if (chart.inverted &&\n !axis.isZAxis &&\n isXAxis &&\n typeof axis.reversed === 'undefined') {\n axis.reversed = true;\n }\n axis.labelRotation = isNumber(labelsOptions.rotation) ?\n labelsOptions.rotation :\n void 0;\n // Register event listeners\n registerEventOptions(axis, options);\n fireEvent(this, 'afterInit');\n }\n /**\n * Merge and set options.\n *\n * @private\n * @function Highcharts.Axis#setOptions\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterSetOptions\n */\n setOptions(userOptions) {\n this.options = merge(AxisDefaults.defaultXAxisOptions, (this.coll === 'yAxis') && AxisDefaults.defaultYAxisOptions, [\n AxisDefaults.defaultTopAxisOptions,\n AxisDefaults.defaultRightAxisOptions,\n AxisDefaults.defaultBottomAxisOptions,\n AxisDefaults.defaultLeftAxisOptions\n ][this.side], merge(\n // if set in setOptions (#1053):\n defaultOptions[this.coll], userOptions));\n fireEvent(this, 'afterSetOptions', { userOptions: userOptions });\n }\n /**\n * The default label formatter. The context is a special config object for\n * the label. In apps, use the\n * [labels.formatter](https://api.highcharts.com/highcharts/xAxis.labels.formatter)\n * instead, except when a modification is needed.\n *\n * @function Highcharts.Axis#defaultLabelFormatter\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n * Formatter context of axis label.\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} [ctx]\n * Formatter context of axis label.\n *\n * @return {string}\n * The formatted label content.\n */\n defaultLabelFormatter(ctx) {\n const axis = this.axis, chart = this.chart, { numberFormatter } = chart, value = isNumber(this.value) ? this.value : NaN, time = axis.chart.time, categories = axis.categories, dateTimeLabelFormat = this.dateTimeLabelFormat, lang = defaultOptions.lang, numericSymbols = lang.numericSymbols, numSymMagnitude = lang.numericSymbolMagnitude || 1000, \n // make sure the same symbol is added for all labels on a linear\n // axis\n numericSymbolDetector = axis.logarithmic ?\n Math.abs(value) :\n axis.tickInterval;\n let i = numericSymbols && numericSymbols.length, multi, ret;\n if (categories) {\n ret = `${this.value}`;\n }\n else if (dateTimeLabelFormat) { // datetime axis\n ret = time.dateFormat(dateTimeLabelFormat, value);\n }\n else if (i && numericSymbolDetector >= 1000) {\n // Decide whether we should add a numeric symbol like k (thousands)\n // or M (millions). If we are to enable this in tooltip or other\n // places as well, we can move this logic to the numberFormatter and\n // enable it by a parameter.\n while (i-- && typeof ret === 'undefined') {\n multi = Math.pow(numSymMagnitude, i + 1);\n if (\n // Only accept a numeric symbol when the distance is more\n // than a full unit. So for example if the symbol is k, we\n // don't accept numbers like 0.5k.\n numericSymbolDetector >= multi &&\n // Accept one decimal before the symbol. Accepts 0.5k but\n // not 0.25k. How does this work with the previous?\n (value * 10) % multi === 0 &&\n numericSymbols[i] !== null &&\n value !== 0) { // #5480\n ret = numberFormatter(value / multi, -1) + numericSymbols[i];\n }\n }\n }\n if (typeof ret === 'undefined') {\n if (Math.abs(value) >= 10000) { // add thousands separators\n ret = numberFormatter(value, -1);\n }\n else { // small numbers\n ret = numberFormatter(value, -1, void 0, ''); // #2466\n }\n }\n return ret;\n }\n /**\n * Get the minimum and maximum for the series of each axis. The function\n * analyzes the axis series and updates `this.dataMin` and `this.dataMax`.\n *\n * @private\n * @function Highcharts.Axis#getSeriesExtremes\n *\n * @emits Highcharts.Axis#event:afterGetSeriesExtremes\n * @emits Highcharts.Axis#event:getSeriesExtremes\n */\n getSeriesExtremes() {\n const axis = this, chart = axis.chart;\n let xExtremes;\n fireEvent(this, 'getSeriesExtremes', null, function () {\n axis.hasVisibleSeries = false;\n // Reset properties in case we're redrawing (#3353)\n axis.dataMin = axis.dataMax = axis.threshold = null;\n axis.softThreshold = !axis.isXAxis;\n // Loop through this axis' series\n axis.series.forEach(function (series) {\n if (series.visible ||\n !chart.options.chart.ignoreHiddenSeries) {\n const seriesOptions = series.options;\n let xData, threshold = seriesOptions.threshold, seriesDataMin, seriesDataMax;\n axis.hasVisibleSeries = true;\n // Validate threshold in logarithmic axes\n if (axis.positiveValuesOnly && threshold <= 0) {\n threshold = null;\n }\n // Get dataMin and dataMax for X axes\n if (axis.isXAxis) {\n xData = series.xData;\n if (xData && xData.length) {\n xData = axis.logarithmic ?\n xData.filter((x) => x > 0) :\n xData;\n xExtremes = series.getXExtremes(xData);\n // If xData contains values which is not numbers,\n // then filter them out. To prevent performance hit,\n // we only do this after we have already found\n // seriesDataMin because in most cases all data is\n // valid. #5234.\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n if (!isNumber(seriesDataMin) &&\n // #5010:\n !(seriesDataMin instanceof Date)) {\n xData = xData.filter(isNumber);\n xExtremes = series.getXExtremes(xData);\n // Do it again with valid data\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n }\n if (xData.length) {\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n }\n // Get dataMin and dataMax for Y axes, as well as handle\n // stacking and processed data\n }\n else {\n // Get this particular series extremes\n const dataExtremes = series.applyExtremes();\n // Get the dataMin and dataMax so far. If percentage is\n // used, the min and max are always 0 and 100. If\n // seriesDataMin and seriesDataMax is null, then series\n // doesn't have active y data, we continue with nulls\n if (isNumber(dataExtremes.dataMin)) {\n seriesDataMin = dataExtremes.dataMin;\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n }\n if (isNumber(dataExtremes.dataMax)) {\n seriesDataMax = dataExtremes.dataMax;\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n // Adjust to threshold\n if (defined(threshold)) {\n axis.threshold = threshold;\n }\n // If any series has a hard threshold, it takes\n // precedence\n if (!seriesOptions.softThreshold ||\n axis.positiveValuesOnly) {\n axis.softThreshold = false;\n }\n }\n }\n });\n });\n fireEvent(this, 'afterGetSeriesExtremes');\n }\n /**\n * Translate from axis value to pixel position on the chart, or back. Use\n * the `toPixels` and `toValue` functions in applications.\n *\n * @private\n * @function Highcharts.Axis#translate\n */\n translate(val, backwards, cvsCoord, old, handleLog, pointPlacement) {\n const axis = (this.linkedParent || this), // #1417\n localMin = (old && axis.old ? axis.old.min : axis.min);\n if (!isNumber(localMin)) {\n return NaN;\n }\n const minPixelPadding = axis.minPixelPadding, doPostTranslate = (axis.isOrdinal ||\n axis.brokenAxis && axis.brokenAxis.hasBreaks ||\n (axis.logarithmic && handleLog)) && axis.lin2val;\n let sign = 1, cvsOffset = 0, localA = old && axis.old ? axis.old.transA : axis.transA, returnValue = 0;\n if (!localA) {\n localA = axis.transA;\n }\n // In vertical axes, the canvas coordinates start from 0 at the top like\n // in SVG.\n if (cvsCoord) {\n sign *= -1; // canvas coordinates inverts the value\n cvsOffset = axis.len;\n }\n // Handle reversed axis\n if (axis.reversed) {\n sign *= -1;\n cvsOffset -= sign * (axis.sector || axis.len);\n }\n // From pixels to value\n if (backwards) { // reverse translation\n val = val * sign + cvsOffset;\n val -= minPixelPadding;\n // from chart pixel to value:\n returnValue = val / localA + localMin;\n if (doPostTranslate) { // log, ordinal and broken axis\n returnValue = axis.lin2val(returnValue);\n }\n // From value to pixels\n }\n else {\n if (doPostTranslate) { // log, ordinal and broken axis\n val = axis.val2lin(val);\n }\n const value = sign * (val - localMin) * localA;\n returnValue = (!axis.isRadial ? correctFloat(value) : value) +\n cvsOffset +\n (sign * minPixelPadding) +\n (isNumber(pointPlacement) ? localA * pointPlacement : 0);\n }\n return returnValue;\n }\n /**\n * Translate a value in terms of axis units into pixels within the chart.\n *\n * @function Highcharts.Axis#toPixels\n *\n * @param {number} value\n * A value in terms of axis units.\n *\n * @param {boolean} paneCoordinates\n * Whether to return the pixel coordinate relative to the chart or just the\n * axis/pane itself.\n *\n * @return {number}\n * Pixel position of the value on the chart or axis.\n */\n toPixels(value, paneCoordinates) {\n return this.translate(value, false, !this.horiz, void 0, true) +\n (paneCoordinates ? 0 : this.pos);\n }\n /**\n * Translate a pixel position along the axis to a value in terms of axis\n * units.\n *\n * @function Highcharts.Axis#toValue\n *\n * @param {number} pixel\n * The pixel value coordinate.\n *\n * @param {boolean} [paneCoordinates=false]\n * Whether the input pixel is relative to the chart or just the axis/pane\n * itself.\n *\n * @return {number}\n * The axis value.\n */\n toValue(pixel, paneCoordinates) {\n return this.translate(pixel - (paneCoordinates ? 0 : this.pos), true, !this.horiz, void 0, true);\n }\n /**\n * Create the path for a plot line that goes from the given value on\n * this axis, across the plot to the opposite side. Also used internally for\n * grid lines and crosshairs.\n *\n * @function Highcharts.Axis#getPlotLinePath\n *\n * @param {Highcharts.AxisPlotLinePathOptionsObject} options\n * Options for the path.\n *\n * @return {Highcharts.SVGPathArray|null}\n * The SVG path definition for the plot line.\n */\n getPlotLinePath(options) {\n const axis = this, chart = axis.chart, axisLeft = axis.left, axisTop = axis.top, old = options.old, value = options.value, lineWidth = options.lineWidth, cHeight = (old && chart.oldChartHeight) || chart.chartHeight, cWidth = (old && chart.oldChartWidth) || chart.chartWidth, transB = axis.transB;\n let translatedValue = options.translatedValue, force = options.force, x1, y1, x2, y2, skip;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Check if x is between a and b. If not, either move to a/b\n * or skip, depending on the force parameter.\n * @private\n */\n function between(x, a, b) {\n if (force !== 'pass' && (x < a || x > b)) {\n if (force) {\n x = clamp(x, a, b);\n }\n else {\n skip = true;\n }\n }\n return x;\n }\n const evt = {\n value: value,\n lineWidth: lineWidth,\n old: old,\n force: force,\n acrossPanes: options.acrossPanes,\n translatedValue: translatedValue\n };\n fireEvent(this, 'getPlotLinePath', evt, function (e) {\n translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));\n // Keep the translated value within sane bounds, and avoid Infinity\n // to fail the isNumber test (#7709).\n translatedValue = clamp(translatedValue, -1e5, 1e5);\n x1 = x2 = Math.round(translatedValue + transB);\n y1 = y2 = Math.round(cHeight - translatedValue - transB);\n if (!isNumber(translatedValue)) { // no min or max\n skip = true;\n force = false; // #7175, don't force it when path is invalid\n }\n else if (axis.horiz) {\n y1 = axisTop;\n y2 = cHeight - axis.bottom;\n x1 = x2 = between(x1, axisLeft, axisLeft + axis.width);\n }\n else {\n x1 = axisLeft;\n x2 = cWidth - axis.right;\n y1 = y2 = between(y1, axisTop, axisTop + axis.height);\n }\n e.path = skip && !force ?\n null :\n chart.renderer.crispLine([['M', x1, y1], ['L', x2, y2]], lineWidth || 1);\n });\n return evt.path;\n }\n /**\n * Internal function to get the tick positions of a linear axis to round\n * values like whole tens or every five.\n *\n * @function Highcharts.Axis#getLinearTickPositions\n *\n * @param {number} tickInterval\n * The normalized tick interval.\n *\n * @param {number} min\n * Axis minimum.\n *\n * @param {number} max\n * Axis maximum.\n *\n * @return {Array}\n * An array of axis values where ticks should be placed.\n */\n getLinearTickPositions(tickInterval, min, max) {\n const roundedMin = correctFloat(Math.floor(min / tickInterval) * tickInterval), roundedMax = correctFloat(Math.ceil(max / tickInterval) * tickInterval), tickPositions = [];\n let pos, lastPos, precision;\n // When the precision is higher than what we filter out in\n // correctFloat, skip it (#6183).\n if (correctFloat(roundedMin + tickInterval) === roundedMin) {\n precision = 20;\n }\n // For single points, add a tick regardless of the relative position\n // (#2662, #6274)\n if (this.single) {\n return [min];\n }\n // Populate the intermediate values\n pos = roundedMin;\n while (pos <= roundedMax) {\n // Place the tick on the rounded value\n tickPositions.push(pos);\n // Always add the raw tickInterval, not the corrected one.\n pos = correctFloat(pos + tickInterval, precision);\n // If the interval is not big enough in the current min - max range\n // to actually increase the loop variable, we need to break out to\n // prevent endless loop. Issue #619\n if (pos === lastPos) {\n break;\n }\n // Record the last value\n lastPos = pos;\n }\n return tickPositions;\n }\n /**\n * Resolve the new minorTicks/minorTickInterval options into the legacy\n * loosely typed minorTickInterval option.\n *\n * @function Highcharts.Axis#getMinorTickInterval\n *\n * @return {number|\"auto\"|null}\n * Legacy option\n */\n getMinorTickInterval() {\n const options = this.options;\n if (options.minorTicks === true) {\n return pick(options.minorTickInterval, 'auto');\n }\n if (options.minorTicks === false) {\n return null;\n }\n return options.minorTickInterval;\n }\n /**\n * Internal function to return the minor tick positions. For logarithmic\n * axes, the same logic as for major ticks is reused.\n *\n * @function Highcharts.Axis#getMinorTickPositions\n *\n * @return {Array}\n * An array of axis values where ticks should be placed.\n */\n getMinorTickPositions() {\n const axis = this, options = axis.options, tickPositions = axis.tickPositions, minorTickInterval = axis.minorTickInterval, pointRangePadding = axis.pointRangePadding || 0, min = axis.min - pointRangePadding, // #1498\n max = axis.max + pointRangePadding, // #1498\n range = max - min;\n let minorTickPositions = [], pos;\n // If minor ticks get too dense, they are hard to read, and may cause\n // long running script. So we don't draw them.\n if (range && range / minorTickInterval < axis.len / 3) { // #3875\n const logarithmic = axis.logarithmic;\n if (logarithmic) {\n // For each interval in the major ticks, compute the minor ticks\n // separately.\n this.paddedTicks.forEach(function (_pos, i, paddedTicks) {\n if (i) {\n minorTickPositions.push.apply(minorTickPositions, logarithmic.getLogTickPositions(minorTickInterval, paddedTicks[i - 1], paddedTicks[i], true));\n }\n });\n }\n else if (axis.dateTime &&\n this.getMinorTickInterval() === 'auto') { // #1314\n minorTickPositions = minorTickPositions.concat(axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(minorTickInterval), min, max, options.startOfWeek));\n }\n else {\n for (pos = min + (tickPositions[0] - min) % minorTickInterval; pos <= max; pos += minorTickInterval) {\n // Very, very, tight grid lines (#5771)\n if (pos === minorTickPositions[0]) {\n break;\n }\n minorTickPositions.push(pos);\n }\n }\n }\n if (minorTickPositions.length !== 0) {\n axis.trimTicks(minorTickPositions); // #3652 #3743 #1498 #6330\n }\n return minorTickPositions;\n }\n /**\n * Adjust the min and max for the minimum range. Keep in mind that the\n * series data is not yet processed, so we don't have information on data\n * cropping and grouping, or updated `axis.pointRange` or\n * `series.pointRange`. The data can't be processed until we have finally\n * established min and max.\n *\n * @private\n * @function Highcharts.Axis#adjustForMinRange\n */\n adjustForMinRange() {\n const axis = this, options = axis.options, log = axis.logarithmic;\n let min = axis.min, max = axis.max, zoomOffset, spaceAvailable, closestDataRange = 0, i, distance, xData, loopLength, minArgs, maxArgs, minRange;\n // Set the automatic minimum range based on the closest point distance\n if (axis.isXAxis &&\n typeof axis.minRange === 'undefined' &&\n !log) {\n if (defined(options.min) ||\n defined(options.max) ||\n defined(options.floor) ||\n defined(options.ceiling)) {\n axis.minRange = null; // don't do this again\n }\n else {\n // Find the closest distance between raw data points, as opposed\n // to closestPointRange that applies to processed points\n // (cropped and grouped)\n axis.series.forEach(function (series) {\n xData = series.xData;\n loopLength = series.xIncrement ? 1 : xData.length - 1;\n if (xData.length > 1) {\n for (i = loopLength; i > 0; i--) {\n distance = xData[i] - xData[i - 1];\n if (!closestDataRange ||\n distance < closestDataRange) {\n closestDataRange = distance;\n }\n }\n }\n });\n axis.minRange = Math.min(closestDataRange * 5, axis.dataMax - axis.dataMin);\n }\n }\n // if minRange is exceeded, adjust\n if (max - min < axis.minRange) {\n spaceAvailable =\n axis.dataMax - axis.dataMin >=\n axis.minRange;\n minRange = axis.minRange;\n zoomOffset = (minRange - max + min) / 2;\n // if min and max options have been set, don't go beyond it\n minArgs = [\n min - zoomOffset,\n pick(options.min, min - zoomOffset)\n ];\n // If space is available, stay within the data range\n if (spaceAvailable) {\n minArgs[2] = axis.logarithmic ?\n axis.logarithmic.log2lin(axis.dataMin) :\n axis.dataMin;\n }\n min = arrayMax(minArgs);\n maxArgs = [\n min + minRange,\n pick(options.max, min + minRange)\n ];\n // If space is availabe, stay within the data range\n if (spaceAvailable) {\n maxArgs[2] = log ?\n log.log2lin(axis.dataMax) :\n axis.dataMax;\n }\n max = arrayMin(maxArgs);\n // now if the max is adjusted, adjust the min back\n if (max - min < minRange) {\n minArgs[0] = max - minRange;\n minArgs[1] = pick(options.min, max - minRange);\n min = arrayMax(minArgs);\n }\n }\n // Record modified extremes\n axis.min = min;\n axis.max = max;\n }\n /**\n * Find the closestPointRange across all series.\n *\n * @private\n * @function Highcharts.Axis#getClosest\n */\n getClosest() {\n let ret;\n if (this.categories) {\n ret = 1;\n }\n else {\n this.series.forEach(function (series) {\n const seriesClosest = series.closestPointRange, visible = series.visible ||\n !series.chart.options.chart.ignoreHiddenSeries;\n if (!series.noSharedTooltip &&\n defined(seriesClosest) &&\n visible) {\n ret = defined(ret) ?\n Math.min(ret, seriesClosest) :\n seriesClosest;\n }\n });\n }\n return ret;\n }\n /**\n * When a point name is given and no x, search for the name in the existing\n * categories, or if categories aren't provided, search names or create a\n * new category (#2522).\n *\n * @private\n * @function Highcharts.Axis#nameToX\n *\n * @param {Highcharts.Point} point\n * The point to inspect.\n *\n * @return {number}\n * The X value that the point is given.\n */\n nameToX(point) {\n const explicitCategories = isArray(this.options.categories), names = explicitCategories ? this.categories : this.names;\n let nameX = point.options.x, x;\n point.series.requireSorting = false;\n if (!defined(nameX)) {\n nameX = this.options.uniqueNames && names ?\n (explicitCategories ?\n names.indexOf(point.name) :\n pick(names.keys[point.name], -1)) :\n point.series.autoIncrement();\n }\n if (nameX === -1) { // Not found in currenct categories\n if (!explicitCategories && names) {\n x = names.length;\n }\n }\n else {\n x = nameX;\n }\n // Write the last point's name to the names array\n if (typeof x !== 'undefined') {\n this.names[x] = point.name;\n // Backwards mapping is much faster than array searching (#7725)\n this.names.keys[point.name] = x;\n }\n else if (point.x) {\n x = point.x; // #17438\n }\n return x;\n }\n /**\n * When changes have been done to series data, update the axis.names.\n *\n * @private\n * @function Highcharts.Axis#updateNames\n */\n updateNames() {\n const axis = this, names = this.names, i = names.length;\n if (i > 0) {\n Object.keys(names.keys).forEach(function (key) {\n delete (names.keys)[key];\n });\n names.length = 0;\n this.minRange = this.userMinRange; // Reset\n (this.series || []).forEach(function (series) {\n // Reset incrementer (#5928)\n series.xIncrement = null;\n // When adding a series, points are not yet generated\n if (!series.points || series.isDirtyData) {\n // When we're updating the series with data that is longer\n // than it was, and cropThreshold is passed, we need to make\n // sure that the axis.max is increased _before_ running the\n // premature processData. Otherwise this early iteration of\n // processData will crop the points to axis.max, and the\n // names array will be too short (#5857).\n axis.max = Math.max(axis.max, series.xData.length - 1);\n series.processData();\n series.generatePoints();\n }\n series.data.forEach(function (point, i) {\n let x;\n if (point &&\n point.options &&\n typeof point.name !== 'undefined' // #9562\n ) {\n x = axis.nameToX(point);\n if (typeof x !== 'undefined' && x !== point.x) {\n point.x = x;\n series.xData[i] = x;\n }\n }\n });\n });\n }\n }\n /**\n * Update translation information.\n *\n * @private\n * @function Highcharts.Axis#setAxisTranslation\n *\n * @emits Highcharts.Axis#event:afterSetAxisTranslation\n */\n setAxisTranslation() {\n const axis = this, range = axis.max - axis.min, linkedParent = axis.linkedParent, hasCategories = !!axis.categories, isXAxis = axis.isXAxis;\n let pointRange = axis.axisPointRange || 0, closestPointRange, minPointOffset = 0, pointRangePadding = 0, ordinalCorrection, transA = axis.transA;\n // Adjust translation for padding. Y axis with categories need to go\n // through the same (#1784).\n if (isXAxis || hasCategories || pointRange) {\n // Get the closest points\n closestPointRange = axis.getClosest();\n if (linkedParent) {\n minPointOffset = linkedParent.minPointOffset;\n pointRangePadding = linkedParent.pointRangePadding;\n }\n else {\n axis.series.forEach(function (series) {\n const seriesPointRange = hasCategories ?\n 1 :\n (isXAxis ?\n pick(series.options.pointRange, closestPointRange, 0) :\n (axis.axisPointRange || 0)), // #2806\n pointPlacement = series.options.pointPlacement;\n pointRange = Math.max(pointRange, seriesPointRange);\n if (!axis.single || hasCategories) {\n // TODO: series should internally set x- and y-\n // pointPlacement to simplify this logic.\n const isPointPlacementAxis = series.is('xrange') ?\n !isXAxis :\n isXAxis;\n // minPointOffset is the value padding to the left of\n // the axis in order to make room for points with a\n // pointRange, typically columns. When the\n // pointPlacement option is 'between' or 'on', this\n // padding does not apply.\n minPointOffset = Math.max(minPointOffset, isPointPlacementAxis && isString(pointPlacement) ?\n 0 :\n seriesPointRange / 2);\n // Determine the total padding needed to the length of\n // the axis to make room for the pointRange. If the\n // series' pointPlacement is 'on', no padding is added.\n pointRangePadding = Math.max(pointRangePadding, isPointPlacementAxis && pointPlacement === 'on' ?\n 0 :\n seriesPointRange);\n }\n });\n }\n // Record minPointOffset and pointRangePadding\n ordinalCorrection = (axis.ordinal && axis.ordinal.slope && closestPointRange) ?\n axis.ordinal.slope / closestPointRange :\n 1; // #988, #1853\n axis.minPointOffset = minPointOffset =\n minPointOffset * ordinalCorrection;\n axis.pointRangePadding =\n pointRangePadding = pointRangePadding * ordinalCorrection;\n // pointRange means the width reserved for each point, like in a\n // column chart\n axis.pointRange = Math.min(pointRange, axis.single && hasCategories ? 1 : range);\n // closestPointRange means the closest distance between points. In\n // columns it is mostly equal to pointRange, but in lines pointRange\n // is 0 while closestPointRange is some other value\n if (isXAxis) {\n axis.closestPointRange = closestPointRange;\n }\n }\n // Secondary values\n axis.translationSlope = axis.transA = transA =\n axis.staticScale ||\n axis.len / ((range + pointRangePadding) || 1);\n // Translation addend\n axis.transB = axis.horiz ? axis.left : axis.bottom;\n axis.minPixelPadding = transA * minPointOffset;\n fireEvent(this, 'afterSetAxisTranslation');\n }\n /**\n * @private\n * @function Highcharts.Axis#minFromRange\n */\n minFromRange() {\n const axis = this;\n return axis.max - axis.range;\n }\n /**\n * Set the tick positions to round values and optionally extend the extremes\n * to the nearest tick.\n *\n * @private\n * @function Highcharts.Axis#setTickInterval\n *\n * @param {boolean} secondPass\n * TO-DO: parameter description\n *\n * @emits Highcharts.Axis#event:foundExtremes\n */\n setTickInterval(secondPass) {\n const axis = this, chart = axis.chart, log = axis.logarithmic, options = axis.options, isXAxis = axis.isXAxis, isLinked = axis.isLinked, tickPixelIntervalOption = options.tickPixelInterval, categories = axis.categories, softThreshold = axis.softThreshold;\n let maxPadding = options.maxPadding, minPadding = options.minPadding, length, linkedParentExtremes, \n // Only non-negative tickInterval is valid, #12961\n tickIntervalOption = isNumber(options.tickInterval) && options.tickInterval >= 0 ?\n options.tickInterval : void 0, threshold = isNumber(axis.threshold) ? axis.threshold : null, thresholdMin, thresholdMax, hardMin, hardMax;\n if (!axis.dateTime && !categories && !isLinked) {\n this.getTickAmount();\n }\n // Min or max set either by zooming/setExtremes or initial options\n hardMin = pick(axis.userMin, options.min);\n hardMax = pick(axis.userMax, options.max);\n // Linked axis gets the extremes from the parent axis\n if (isLinked) {\n axis.linkedParent = chart[axis.coll][options.linkedTo];\n linkedParentExtremes = axis.linkedParent.getExtremes();\n axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);\n axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);\n if (options.type !== axis.linkedParent.options.type) {\n // Can't link axes of different type\n error(11, 1, chart);\n }\n // Initial min and max from the extreme data values\n }\n else {\n // Adjust to hard threshold\n if (softThreshold && defined(threshold)) {\n if (axis.dataMin >= threshold) {\n thresholdMin = threshold;\n minPadding = 0;\n }\n else if (axis.dataMax <= threshold) {\n thresholdMax = threshold;\n maxPadding = 0;\n }\n }\n axis.min = pick(hardMin, thresholdMin, axis.dataMin);\n axis.max = pick(hardMax, thresholdMax, axis.dataMax);\n }\n if (log) {\n if (axis.positiveValuesOnly &&\n !secondPass &&\n Math.min(axis.min, pick(axis.dataMin, axis.min)) <= 0) { // #978\n // Can't plot negative values on log axis\n error(10, 1, chart);\n }\n // The correctFloat cures #934, float errors on full tens. But it\n // was too aggressive for #4360 because of conversion back to lin,\n // therefore use precision 15.\n axis.min = correctFloat(log.log2lin(axis.min), 16);\n axis.max = correctFloat(log.log2lin(axis.max), 16);\n }\n // handle zoomed range\n if (axis.range && defined(axis.max)) {\n // #618, #6773:\n axis.userMin = axis.min = hardMin =\n Math.max(axis.dataMin, axis.minFromRange());\n axis.userMax = hardMax = axis.max;\n axis.range = null; // don't use it when running setExtremes\n }\n // Hook for Highcharts Stock Scroller.\n // Consider combining with beforePadding.\n fireEvent(axis, 'foundExtremes');\n // Hook for adjusting this.min and this.max. Used by bubble series.\n if (axis.beforePadding) {\n axis.beforePadding();\n }\n // adjust min and max for the minimum range\n axis.adjustForMinRange();\n // Pad the values to get clear of the chart's edges. To avoid\n // tickInterval taking the padding into account, we do this after\n // computing tick interval (#1337).\n if (!categories &&\n !axis.axisPointRange &&\n !(axis.stacking && axis.stacking.usePercentage) &&\n !isLinked &&\n defined(axis.min) &&\n defined(axis.max)) {\n length = axis.max - axis.min;\n if (length) {\n if (!defined(hardMin) && minPadding) {\n axis.min -= length * minPadding;\n }\n if (!defined(hardMax) && maxPadding) {\n axis.max += length * maxPadding;\n }\n }\n }\n // Handle options for floor, ceiling, softMin and softMax (#6359)\n if (!isNumber(axis.userMin)) {\n if (isNumber(options.softMin) && options.softMin < axis.min) {\n axis.min = hardMin = options.softMin; // #6894\n }\n if (isNumber(options.floor)) {\n axis.min = Math.max(axis.min, options.floor);\n }\n }\n if (!isNumber(axis.userMax)) {\n if (isNumber(options.softMax) && options.softMax > axis.max) {\n axis.max = hardMax = options.softMax; // #6894\n }\n if (isNumber(options.ceiling)) {\n axis.max = Math.min(axis.max, options.ceiling);\n }\n }\n // When the threshold is soft, adjust the extreme value only if the data\n // extreme and the padded extreme land on either side of the threshold.\n // For example, a series of [0, 1, 2, 3] would make the yAxis add a tick\n // for -1 because of the default minPadding and startOnTick options.\n // This is prevented by the softThreshold option.\n if (softThreshold && defined(axis.dataMin)) {\n threshold = threshold || 0;\n if (!defined(hardMin) &&\n axis.min < threshold &&\n axis.dataMin >= threshold) {\n axis.min = axis.options.minRange ?\n Math.min(threshold, axis.max -\n axis.minRange) :\n threshold;\n }\n else if (!defined(hardMax) &&\n axis.max > threshold &&\n axis.dataMax <= threshold) {\n axis.max = axis.options.minRange ?\n Math.max(threshold, axis.min +\n axis.minRange) :\n threshold;\n }\n }\n // If min is bigger than highest, or if max less than lowest value, the\n // chart should not render points. (#14417)\n if (isNumber(axis.min) &&\n isNumber(axis.max) &&\n !this.chart.polar &&\n (axis.min > axis.max)) {\n if (defined(axis.options.min)) {\n axis.max = axis.min;\n }\n else if (defined(axis.options.max)) {\n axis.min = axis.max;\n }\n }\n // get tickInterval\n if (axis.min === axis.max ||\n typeof axis.min === 'undefined' ||\n typeof axis.max === 'undefined') {\n axis.tickInterval = 1;\n }\n else if (isLinked &&\n axis.linkedParent &&\n !tickIntervalOption &&\n tickPixelIntervalOption ===\n axis.linkedParent.options.tickPixelInterval) {\n axis.tickInterval = tickIntervalOption =\n axis.linkedParent.tickInterval;\n }\n else {\n axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?\n ((axis.max - axis.min) /\n Math.max(this.tickAmount - 1, 1)) :\n void 0, \n // For categoried axis, 1 is default, for linear axis use\n // tickPix\n categories ?\n 1 :\n // don't let it be more than the data range\n (axis.max - axis.min) *\n tickPixelIntervalOption /\n Math.max(axis.len, tickPixelIntervalOption));\n }\n // Now we're finished detecting min and max, crop and group series data.\n // This is in turn needed in order to find tick positions in ordinal\n // axes.\n if (isXAxis && !secondPass) {\n const hasExtremesChanged = axis.min !==\n (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n // First process all series assigned to that axis.\n axis.series.forEach(function (series) {\n // Allows filtering out points outside the plot area.\n series.forceCrop = (series.forceCropping &&\n series.forceCropping());\n series.processData(hasExtremesChanged);\n });\n // Then apply grouping if needed. The hasExtremesChanged helps to\n // decide if the data grouping should be skipped in the further\n // calculations #16319.\n fireEvent(this, 'postProcessData', { hasExtremesChanged });\n }\n // set the translation factor used in translate function\n axis.setAxisTranslation();\n // hook for ordinal axes and radial axes\n fireEvent(this, 'initialAxisTranslation');\n // In column-like charts, don't cramp in more ticks than there are\n // points (#1943, #4184)\n if (axis.pointRange && !tickIntervalOption) {\n axis.tickInterval = Math.max(axis.pointRange, axis.tickInterval);\n }\n // Before normalizing the tick interval, handle minimum tick interval.\n // This applies only if tickInterval is not defined.\n const minTickInterval = pick(options.minTickInterval, \n // In datetime axes, don't go below the data interval, except when\n // there are scatter-like series involved (#13369).\n axis.dateTime &&\n !axis.series.some((s) => s.noSharedTooltip) ?\n axis.closestPointRange : 0);\n if (!tickIntervalOption && axis.tickInterval < minTickInterval) {\n axis.tickInterval = minTickInterval;\n }\n // For linear axes, normalize the interval\n if (!axis.dateTime && !axis.logarithmic && !tickIntervalOption) {\n axis.tickInterval = getNormalizedTickInterval(axis, axis.tickInterval);\n }\n // Prevent ticks from getting so close that we can't draw the labels\n if (!this.tickAmount) {\n axis.tickInterval = axis.unsquish();\n }\n this.setTickPositions();\n }\n /**\n * Now we have computed the normalized tickInterval, get the tick positions.\n *\n * @private\n * @function Highcharts.Axis#setTickPositions\n *\n * @emits Highcharts.Axis#event:afterSetTickPositions\n */\n setTickPositions() {\n const axis = this, options = this.options, tickPositionsOption = options.tickPositions, tickPositioner = options.tickPositioner, minorTickIntervalOption = this.getMinorTickInterval(), hasVerticalPanning = this.hasVerticalPanning(), isColorAxis = this.coll === 'colorAxis', startOnTick = ((isColorAxis || !hasVerticalPanning) && options.startOnTick), endOnTick = ((isColorAxis || !hasVerticalPanning) && options.endOnTick);\n let tickPositions = [], tickPositionerResult;\n // Set the tickmarkOffset\n this.tickmarkOffset = (this.categories &&\n options.tickmarkPlacement === 'between' &&\n this.tickInterval === 1) ? 0.5 : 0; // #3202\n // get minorTickInterval\n this.minorTickInterval =\n minorTickIntervalOption === 'auto' &&\n this.tickInterval ?\n this.tickInterval / options.minorTicksPerMajor :\n minorTickIntervalOption;\n // When there is only one point, or all points have the same value on\n // this axis, then min and max are equal and tickPositions.length is 0\n // or 1. In this case, add some padding in order to center the point,\n // but leave it with one tick. #1337.\n this.single =\n this.min === this.max &&\n defined(this.min) &&\n !this.tickAmount &&\n (\n // Data is on integer (#6563)\n parseInt(this.min, 10) === this.min ||\n // Between integers and decimals are not allowed (#6274)\n options.allowDecimals !== false);\n /**\n * Contains the current positions that are laid out on the axis. The\n * positions are numbers in terms of axis values. In a category axis\n * they are integers, in a datetime axis they are also integers, but\n * designating milliseconds.\n *\n * This property is read only - for modifying the tick positions, use\n * the `tickPositioner` callback or [axis.tickPositions(\n * https://api.highcharts.com/highcharts/xAxis.tickPositions) option\n * instead.\n *\n * @name Highcharts.Axis#tickPositions\n * @type {Highcharts.AxisTickPositionsArray|undefined}\n */\n if (tickPositionsOption) {\n // Find the tick positions. Work on a copy (#1565)\n tickPositions = tickPositionsOption.slice();\n }\n else if (isNumber(this.min) && isNumber(this.max)) {\n // Too many ticks (#6405). Create a friendly warning and provide two\n // ticks so at least we can show the data series.\n if ((!axis.ordinal || !axis.ordinal.positions) &&\n ((this.max - this.min) /\n this.tickInterval >\n Math.max(2 * this.len, 200))) {\n tickPositions = [this.min, this.max];\n error(19, false, this.chart);\n }\n else if (axis.dateTime) {\n tickPositions = axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(this.tickInterval, options.units), this.min, this.max, options.startOfWeek, axis.ordinal && axis.ordinal.positions, this.closestPointRange, true);\n }\n else if (axis.logarithmic) {\n tickPositions = axis.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max);\n }\n else {\n const startingTickInterval = this.tickInterval;\n let adjustedTickInterval = startingTickInterval;\n while (adjustedTickInterval <= startingTickInterval * 2) {\n tickPositions = this.getLinearTickPositions(this.tickInterval, this.min, this.max);\n // If there are more tick positions than the set tickAmount,\n // increase the tickInterval and continue until it fits.\n // (#17100)\n if (this.tickAmount &&\n tickPositions.length > this.tickAmount) {\n this.tickInterval = getNormalizedTickInterval(this, adjustedTickInterval *= 1.1);\n }\n else {\n break;\n }\n }\n }\n // Too dense ticks, keep only the first and last (#4477)\n if (tickPositions.length > this.len) {\n tickPositions = [\n tickPositions[0],\n tickPositions[tickPositions.length - 1]\n ];\n // Reduce doubled value (#7339)\n if (tickPositions[0] === tickPositions[1]) {\n tickPositions.length = 1;\n }\n }\n // Run the tick positioner callback, that allows modifying auto tick\n // positions.\n if (tickPositioner) {\n // Make it available to the positioner\n this.tickPositions = tickPositions;\n tickPositionerResult = tickPositioner.apply(axis, [this.min, this.max]);\n if (tickPositionerResult) {\n tickPositions = tickPositionerResult;\n }\n }\n }\n this.tickPositions = tickPositions;\n // Reset min/max or remove extremes based on start/end on tick\n this.paddedTicks = tickPositions.slice(0); // Used for logarithmic minor\n this.trimTicks(tickPositions, startOnTick, endOnTick);\n if (!this.isLinked && isNumber(this.min) && isNumber(this.max)) {\n // Substract half a unit (#2619, #2846, #2515, #3390), but not in\n // case of multiple ticks (#6897)\n if (this.single &&\n tickPositions.length < 2 &&\n !this.categories &&\n !this.series.some((s) => (s.is('heatmap') && s.options.pointPlacement === 'between'))) {\n this.min -= 0.5;\n this.max += 0.5;\n }\n if (!tickPositionsOption && !tickPositionerResult) {\n this.adjustTickAmount();\n }\n }\n fireEvent(this, 'afterSetTickPositions');\n }\n /**\n * Handle startOnTick and endOnTick by either adapting to padding min/max or\n * rounded min/max. Also handle single data points.\n *\n * @private\n * @function Highcharts.Axis#trimTicks\n *\n * @param {Array} tickPositions\n * TO-DO: parameter description\n *\n * @param {boolean} [startOnTick]\n * TO-DO: parameter description\n *\n * @param {boolean} [endOnTick]\n * TO-DO: parameter description\n */\n trimTicks(tickPositions, startOnTick, endOnTick) {\n const roundedMin = tickPositions[0], roundedMax = tickPositions[tickPositions.length - 1], minPointOffset = (!this.isOrdinal && this.minPointOffset) || 0; // (#12716)\n fireEvent(this, 'trimTicks');\n if (!this.isLinked) {\n if (startOnTick && roundedMin !== -Infinity) { // #6502\n this.min = roundedMin;\n }\n else {\n while (this.min - minPointOffset > tickPositions[0]) {\n tickPositions.shift();\n }\n }\n if (endOnTick) {\n this.max = roundedMax;\n }\n else {\n while (this.max + minPointOffset <\n tickPositions[tickPositions.length - 1]) {\n tickPositions.pop();\n }\n }\n // If no tick are left, set one tick in the middle (#3195)\n if (tickPositions.length === 0 &&\n defined(roundedMin) &&\n !this.options.tickPositions) {\n tickPositions.push((roundedMax + roundedMin) / 2);\n }\n }\n }\n /**\n * Check if there are multiple axes in the same pane.\n *\n * @private\n * @function Highcharts.Axis#alignToOthers\n *\n * @return {boolean|undefined}\n * True if there are other axes.\n */\n alignToOthers() {\n const axis = this, alignedAxes = [this], options = axis.options, alignThresholds = (this.coll === 'yAxis' &&\n this.chart.options.chart.alignThresholds), thresholdAlignments = [];\n let hasOther;\n axis.thresholdAlignment = void 0;\n if ((\n // Only if alignTicks or alignThresholds is true\n (this.chart.options.chart.alignTicks !== false &&\n options.alignTicks) || (alignThresholds)) &&\n // Disabled when startOnTick or endOnTick are false (#7604)\n options.startOnTick !== false &&\n options.endOnTick !== false &&\n // Don't try to align ticks on a log axis, they are not evenly\n // spaced (#6021)\n !axis.logarithmic) {\n // Get a key identifying which pane the axis belongs to\n const getKey = (axis) => {\n const { horiz, options } = axis;\n return [\n horiz ? options.left : options.top,\n options.width,\n options.height,\n options.pane\n ].join(',');\n };\n const thisKey = getKey(this);\n this.chart[this.coll].forEach(function (otherAxis) {\n const { series } = otherAxis;\n if (\n // #4442\n series.length &&\n series.some((s) => s.visible) &&\n otherAxis !== axis &&\n getKey(otherAxis) === thisKey) {\n hasOther = true; // #4201\n alignedAxes.push(otherAxis);\n }\n });\n }\n if (hasOther && alignThresholds) {\n // Handle alignThresholds. The `thresholdAlignments` array keeps\n // records of where each axis in the group wants its threshold, from\n // 0 which is on `axis.min`, to 1 which is on `axis.max`.\n alignedAxes.forEach((otherAxis) => {\n const threshAlign = otherAxis.getThresholdAlignment(axis);\n if (isNumber(threshAlign)) {\n thresholdAlignments.push(threshAlign);\n }\n });\n // For each of the axes in the group, record the average\n // `thresholdAlignment`.\n const thresholdAlignment = thresholdAlignments.length > 1 ?\n thresholdAlignments.reduce((sum, n) => (sum += n), 0) / thresholdAlignments.length :\n void 0;\n alignedAxes.forEach((axis) => {\n axis.thresholdAlignment = thresholdAlignment;\n });\n }\n return hasOther;\n }\n /**\n * Where the axis wants its threshold, from 0 which is on `axis.min`, to 1 which\n * is on `axis.max`.\n *\n * @private\n * @function Highcharts.Axis#getThresholdAlignment\n */\n getThresholdAlignment(callerAxis) {\n if (!isNumber(this.dataMin) ||\n (this !== callerAxis &&\n this.series.some((s) => (s.isDirty || s.isDirtyData)))) {\n this.getSeriesExtremes();\n }\n if (isNumber(this.threshold)) {\n let thresholdAlignment = clamp(((this.threshold - (this.dataMin || 0)) /\n ((this.dataMax || 0) - (this.dataMin || 0))), 0, 1);\n if (this.options.reversed) {\n thresholdAlignment = 1 - thresholdAlignment;\n }\n return thresholdAlignment;\n }\n }\n /**\n * Find the max ticks of either the x and y axis collection, and record it\n * in `this.tickAmount`.\n *\n * @private\n * @function Highcharts.Axis#getTickAmount\n */\n getTickAmount() {\n const axis = this, options = this.options, tickPixelInterval = options.tickPixelInterval;\n let tickAmount = options.tickAmount;\n if (!defined(options.tickInterval) &&\n !tickAmount &&\n this.len < tickPixelInterval &&\n !this.isRadial &&\n !axis.logarithmic &&\n options.startOnTick &&\n options.endOnTick) {\n tickAmount = 2;\n }\n if (!tickAmount && this.alignToOthers()) {\n // Add 1 because 4 tick intervals require 5 ticks (including first\n // and last)\n tickAmount = Math.ceil(this.len / tickPixelInterval) + 1;\n }\n // For tick amounts of 2 and 3, compute five ticks and remove the\n // intermediate ones. This prevents the axis from adding ticks that are\n // too far away from the data extremes.\n if (tickAmount < 4) {\n this.finalTickAmt = tickAmount;\n tickAmount = 5;\n }\n this.tickAmount = tickAmount;\n }\n /**\n * When using multiple axes, adjust the number of ticks to match the highest\n * number of ticks in that group.\n *\n * @private\n * @function Highcharts.Axis#adjustTickAmount\n */\n adjustTickAmount() {\n const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions && tickPositions.length, threshold = pick(axis.threshold, axis.softThreshold ? 0 : null);\n let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;\n const \n // Extend the tickPositions by appending a position\n append = () => tickPositions.push(correctFloat(tickPositions[tickPositions.length - 1] +\n tickInterval)), \n // Extend the tickPositions by prepending a position\n prepend = () => tickPositions.unshift(correctFloat(tickPositions[0] - tickInterval));\n // If `thresholdAlignment` is a number, it means the `alignThresholds`\n // option is true. The `thresholdAlignment` is a scalar value between 0\n // and 1 for where the threshold should be relative to `axis.min` and\n // `axis.max`. Now that we know the tick amount, convert this to the\n // tick index. Unless `thresholdAlignment` is exactly 0 or 1, avoid the\n // first or last tick because that would lead to series being clipped.\n if (isNumber(thresholdAlignment)) {\n thresholdTickIndex = thresholdAlignment < 0.5 ?\n Math.ceil(thresholdAlignment * (tickAmount - 1)) :\n Math.floor(thresholdAlignment * (tickAmount - 1));\n if (options.reversed) {\n thresholdTickIndex = tickAmount - 1 - thresholdTickIndex;\n }\n }\n if (axis.hasData() && isNumber(min) && isNumber(max)) { // #14769\n // Adjust extremes and translation to the modified tick positions\n const adjustExtremes = () => {\n axis.transA *= (currentTickAmount - 1) / (tickAmount - 1);\n // Do not crop when ticks are not extremes (#9841)\n axis.min = options.startOnTick ?\n tickPositions[0] :\n Math.min(min, tickPositions[0]);\n axis.max = options.endOnTick ?\n tickPositions[tickPositions.length - 1] :\n Math.max(max, tickPositions[tickPositions.length - 1]);\n };\n // When the axis is subject to the alignThresholds option. Use\n // axis.threshold because the local threshold includes the\n // `softThreshold`.\n if (isNumber(thresholdTickIndex) && isNumber(axis.threshold)) {\n // Throw away the previously computed tickPositions and start\n // from scratch with only the threshold itself, then add ticks\n // below the threshold first, then fill up above the threshold.\n // If we are not able to fill up to axis.max, double the\n // tickInterval and run again.\n while (tickPositions[thresholdTickIndex] !== threshold ||\n tickPositions.length !== tickAmount ||\n tickPositions[0] > min ||\n tickPositions[tickPositions.length - 1] < max) {\n tickPositions.length = 0;\n tickPositions.push(axis.threshold);\n while (tickPositions.length < tickAmount) {\n if (\n // Start by prepending positions until the threshold\n // is at the required index...\n tickPositions[thresholdTickIndex] === void 0 ||\n tickPositions[thresholdTickIndex] > axis.threshold) {\n prepend();\n }\n else {\n // ... then append positions until we have the\n // required length\n append();\n }\n }\n // Safety vent\n if (tickInterval > axis.tickInterval * 8) {\n break;\n }\n tickInterval *= 2;\n }\n adjustExtremes();\n }\n else if (currentTickAmount < tickAmount) {\n while (tickPositions.length < tickAmount) {\n // Extend evenly for both sides unless we're on the\n // threshold (#3965)\n if (tickPositions.length % 2 || min === threshold) {\n append();\n }\n else {\n prepend();\n }\n }\n adjustExtremes();\n }\n // The finalTickAmt property is set in getTickAmount\n if (defined(finalTickAmt)) {\n i = len = tickPositions.length;\n while (i--) {\n if (\n // Remove every other tick\n (finalTickAmt === 3 && i % 2 === 1) ||\n // Remove all but first and last\n (finalTickAmt <= 2 && i > 0 && i < len - 1)) {\n tickPositions.splice(i, 1);\n }\n }\n axis.finalTickAmt = void 0;\n }\n }\n }\n /**\n * Set the scale based on data min and max, user set min and max or options.\n *\n * @private\n * @function Highcharts.Axis#setScale\n *\n * @emits Highcharts.Axis#event:afterSetScale\n */\n setScale() {\n const axis = this;\n let isDirtyData = false, isXAxisDirty = false;\n axis.series.forEach(function (series) {\n isDirtyData = isDirtyData || series.isDirtyData || series.isDirty;\n // When x axis is dirty, we need new data extremes for y as\n // well:\n isXAxisDirty = (isXAxisDirty ||\n (series.xAxis && series.xAxis.isDirty) ||\n false);\n });\n // set the new axisLength\n axis.setAxisSize();\n const isDirtyAxisLength = axis.len !== (axis.old && axis.old.len);\n // do we really need to go through all this?\n if (isDirtyAxisLength ||\n isDirtyData ||\n isXAxisDirty ||\n axis.isLinked ||\n axis.forceRedraw ||\n axis.userMin !== (axis.old && axis.old.userMin) ||\n axis.userMax !== (axis.old && axis.old.userMax) ||\n axis.alignToOthers()) {\n if (axis.stacking) {\n axis.stacking.resetStacks();\n axis.stacking.buildStacks();\n }\n axis.forceRedraw = false;\n // #18066 delete minRange property to ensure that it will be\n // calculated again after dirty data in series\n if (!axis.userMinRange) {\n axis.minRange = void 0;\n }\n // get data extremes if needed\n axis.getSeriesExtremes();\n // get fixed positions based on tickInterval\n axis.setTickInterval();\n // Mark as dirty if it is not already set to dirty and extremes have\n // changed. #595.\n if (!axis.isDirty) {\n axis.isDirty =\n isDirtyAxisLength ||\n axis.min !== (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n }\n }\n else if (axis.stacking) {\n axis.stacking.cleanStacks();\n }\n // Recalculate panning state object, when the data\n // has changed. It is required when vertical panning is enabled.\n if (isDirtyData && axis.panningState) {\n axis.panningState.isDirty = true;\n }\n fireEvent(this, 'afterSetScale');\n }\n /**\n * Set the minimum and maximum of the axes after render time. If the\n * `startOnTick` and `endOnTick` options are true, the minimum and maximum\n * values are rounded off to the nearest tick. To prevent this, these\n * options can be set to false before calling setExtremes. Also, setExtremes\n * will not allow a range lower than the `minRange` option, which by default\n * is the range of five points.\n *\n * @sample highcharts/members/axis-setextremes/\n * Set extremes from a button\n * @sample highcharts/members/axis-setextremes-datetime/\n * Set extremes on a datetime axis\n * @sample highcharts/members/axis-setextremes-off-ticks/\n * Set extremes off ticks\n * @sample stock/members/axis-setextremes/\n * Set extremes in Highcharts Stock\n *\n * @function Highcharts.Axis#setExtremes\n *\n * @param {number} [newMin]\n * The new minimum value.\n *\n * @param {number} [newMax]\n * The new maximum value.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n *\n * @param {boolean|Partial} [animation=true]\n * Enable or modify animations.\n *\n * @param {*} [eventArguments]\n * Arguments to be accessed in event handler.\n *\n * @emits Highcharts.Axis#event:setExtremes\n */\n setExtremes(newMin, newMax, redraw, animation, eventArguments) {\n const axis = this, chart = axis.chart;\n redraw = pick(redraw, true); // defaults to true\n axis.series.forEach(function (serie) {\n delete serie.kdTree;\n });\n // Extend the arguments with min and max\n eventArguments = extend(eventArguments, {\n min: newMin,\n max: newMax\n });\n // Fire the event\n fireEvent(axis, 'setExtremes', eventArguments, function () {\n axis.userMin = newMin;\n axis.userMax = newMax;\n axis.eventArgs = eventArguments;\n if (redraw) {\n chart.redraw(animation);\n }\n });\n }\n /**\n * Overridable method for zooming chart. Pulled out in a separate method to\n * allow overriding in stock charts.\n *\n * @private\n * @function Highcharts.Axis#zoom\n */\n zoom(newMin, newMax) {\n const axis = this, dataMin = this.dataMin, dataMax = this.dataMax, options = this.options, min = Math.min(dataMin, pick(options.min, dataMin)), max = Math.max(dataMax, pick(options.max, dataMax)), evt = {\n newMin: newMin,\n newMax: newMax\n };\n fireEvent(this, 'zoom', evt, function (e) {\n // Use e.newMin and e.newMax - event handlers may have altered them\n let newMin = e.newMin, newMax = e.newMax;\n if (newMin !== axis.min || newMax !== axis.max) { // #5790\n // Prevent pinch zooming out of range. Check for defined is for\n // #1946. #1734.\n if (!axis.allowZoomOutside) {\n // #6014, sometimes newMax will be smaller than min (or\n // newMin will be larger than max).\n if (defined(dataMin)) {\n if (newMin < min) {\n newMin = min;\n }\n if (newMin > max) {\n newMin = max;\n }\n }\n if (defined(dataMax)) {\n if (newMax < min) {\n newMax = min;\n }\n if (newMax > max) {\n newMax = max;\n }\n }\n }\n // In full view, displaying the reset zoom button is not\n // required\n axis.displayBtn = (typeof newMin !== 'undefined' ||\n typeof newMax !== 'undefined');\n // Do it\n axis.setExtremes(newMin, newMax, false, void 0, { trigger: 'zoom' });\n }\n e.zoomed = true;\n });\n return evt.zoomed;\n }\n /**\n * Update the axis metrics.\n *\n * @private\n * @function Highcharts.Axis#setAxisSize\n */\n setAxisSize() {\n const chart = this.chart, options = this.options, \n // [top, right, bottom, left]\n offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz, \n // Check for percentage based input values. Rounding fixes problems\n // with column overflow and plot line filtering (#4898, #4899)\n width = this.width = Math.round(relativeLength(pick(options.width, chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength(pick(options.height, chart.plotHeight - offsets[0] + offsets[2]), chart.plotHeight)), top = this.top = Math.round(relativeLength(pick(options.top, chart.plotTop + offsets[0]), chart.plotHeight, chart.plotTop)), left = this.left = Math.round(relativeLength(pick(options.left, chart.plotLeft + offsets[3]), chart.plotWidth, chart.plotLeft));\n // Expose basic values to use in Series object and navigator\n this.bottom = chart.chartHeight - height - top;\n this.right = chart.chartWidth - width - left;\n // Direction agnostic properties\n this.len = Math.max(horiz ? width : height, 0); // Math.max fixes #905\n this.pos = horiz ? left : top; // distance from SVG origin\n }\n /**\n * Get the current extremes for the axis.\n *\n * @sample highcharts/members/axis-getextremes/\n * Report extremes by click on a button\n *\n * @function Highcharts.Axis#getExtremes\n *\n * @return {Highcharts.ExtremesObject}\n * An object containing extremes information.\n */\n getExtremes() {\n const axis = this, log = axis.logarithmic;\n return {\n min: log ?\n correctFloat(log.lin2log(axis.min)) :\n axis.min,\n max: log ?\n correctFloat(log.lin2log(axis.max)) :\n axis.max,\n dataMin: axis.dataMin,\n dataMax: axis.dataMax,\n userMin: axis.userMin,\n userMax: axis.userMax\n };\n }\n /**\n * Get the zero plane either based on zero or on the min or max value.\n * Used in bar and area plots.\n *\n * @function Highcharts.Axis#getThreshold\n *\n * @param {number} threshold\n * The threshold in axis values.\n *\n * @return {number}\n * The translated threshold position in terms of pixels, and corrected to\n * stay within the axis bounds.\n */\n getThreshold(threshold) {\n const axis = this, log = axis.logarithmic, realMin = log ? log.lin2log(axis.min) : axis.min, realMax = log ? log.lin2log(axis.max) : axis.max;\n if (threshold === null || threshold === -Infinity) {\n threshold = realMin;\n }\n else if (threshold === Infinity) {\n threshold = realMax;\n }\n else if (realMin > threshold) {\n threshold = realMin;\n }\n else if (realMax < threshold) {\n threshold = realMax;\n }\n return axis.translate(threshold, 0, 1, 0, 1);\n }\n /**\n * Compute auto alignment for the axis label based on which side the axis is\n * on and the given rotation for the label.\n *\n * @private\n * @function Highcharts.Axis#autoLabelAlign\n *\n * @param {number} rotation\n * The rotation in degrees as set by either the `rotation` or `autoRotation`\n * options.\n *\n * @return {Highcharts.AlignValue}\n * Can be `\"center\"`, `\"left\"` or `\"right\"`.\n */\n autoLabelAlign(rotation) {\n const angle = (pick(rotation, 0) - (this.side * 90) + 720) % 360, evt = { align: 'center' };\n fireEvent(this, 'autoLabelAlign', evt, function (e) {\n if (angle > 15 && angle < 165) {\n e.align = 'right';\n }\n else if (angle > 195 && angle < 345) {\n e.align = 'left';\n }\n });\n return evt.align;\n }\n /**\n * Get the tick length and width for the axis based on axis options.\n *\n * @private\n * @function Highcharts.Axis#tickSize\n *\n * @param {string} [prefix]\n * 'tick' or 'minorTick'\n *\n * @return {Array|undefined}\n * An array of tickLength and tickWidth\n */\n tickSize(prefix) {\n const options = this.options, tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'], \n // Default to 1 on linear and datetime X axes\n prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);\n let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;\n if (tickWidth && tickLength) {\n // Negate the length\n if (options[prefix + 'Position'] === 'inside') {\n tickLength = -tickLength;\n }\n tickSize = [tickLength, tickWidth];\n }\n const e = { tickSize };\n fireEvent(this, 'afterTickSize', e);\n return e.tickSize;\n }\n /**\n * Return the size of the labels.\n *\n * @private\n * @function Highcharts.Axis#labelMetrics\n */\n labelMetrics() {\n const renderer = this.chart.renderer, ticks = this.ticks, tick = ticks[Object.keys(ticks)[0]] || {};\n return this.chart.renderer.fontMetrics(tick.label ||\n tick.movedLabel ||\n renderer.box);\n }\n /**\n * Prevent the ticks from getting so close we can't draw the labels. On a\n * horizontal axis, this is handled by rotating the labels, removing ticks\n * and adding ellipsis. On a vertical axis remove ticks and add ellipsis.\n *\n * @private\n * @function Highcharts.Axis#unsquish\n */\n unsquish() {\n const labelOptions = this.options.labels, horiz = this.horiz, tickInterval = this.tickInterval, slotSize = this.len / (((this.categories ? 1 : 0) +\n this.max -\n this.min) /\n tickInterval), rotationOption = labelOptions.rotation, \n // We don't know the actual rendered line height at this point, but\n // it defaults to 0.75em\n lineHeight = this.labelMetrics().h * 0.75, range = Math.max(this.max - this.min, 0), \n // Return the multiple of tickInterval that is needed to avoid\n // collision\n getStep = function (spaceNeeded) {\n let step = spaceNeeded / (slotSize || 1);\n step = step > 1 ? Math.ceil(step) : 1;\n // Guard for very small or negative angles (#9835)\n if (step * tickInterval > range &&\n spaceNeeded !== Infinity &&\n slotSize !== Infinity &&\n range) {\n step = Math.ceil(range / tickInterval);\n }\n return correctFloat(step * tickInterval);\n };\n let newTickInterval = tickInterval, rotation, bestScore = Number.MAX_VALUE, autoRotation;\n if (horiz) {\n if (!labelOptions.staggerLines) {\n if (isNumber(rotationOption)) {\n autoRotation = [rotationOption];\n }\n else if (slotSize < labelOptions.autoRotationLimit) {\n autoRotation = labelOptions.autoRotation;\n }\n }\n if (autoRotation) {\n let step, score;\n // Loop over the given autoRotation options, and determine which\n // gives the best score. The best score is that with the lowest\n // number of steps and a rotation closest to horizontal.\n for (const rot of autoRotation) {\n if (rot === rotationOption ||\n (rot && rot >= -90 && rot <= 90)) { // #3891\n step = getStep(Math.abs(lineHeight / Math.sin(deg2rad * rot)));\n score = step + Math.abs(rot / 360);\n if (score < bestScore) {\n bestScore = score;\n rotation = rot;\n newTickInterval = step;\n }\n }\n }\n }\n }\n else { // #4411\n newTickInterval = getStep(lineHeight);\n }\n this.autoRotation = autoRotation;\n this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);\n return labelOptions.step ? tickInterval : newTickInterval;\n }\n /**\n * Get the general slot width for labels/categories on this axis. This may\n * change between the pre-render (from Axis.getOffset) and the final tick\n * rendering and placement.\n *\n * @private\n * @function Highcharts.Axis#getSlotWidth\n *\n * @param {Highcharts.Tick} [tick] Optionally, calculate the slot width\n * basing on tick label. It is used in highcharts-3d module, where the slots\n * has different widths depending on perspective angles.\n *\n * @return {number}\n * The pixel width allocated to each axis label.\n */\n getSlotWidth(tick) {\n // #5086, #1580, #1931\n const chart = this.chart, horiz = this.horiz, labelOptions = this.options.labels, slotCount = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1), marginLeft = chart.margin[3];\n // Used by grid axis\n if (tick && isNumber(tick.slotWidth)) { // #13221, can be 0\n return tick.slotWidth;\n }\n if (horiz && labelOptions.step < 2) {\n if (labelOptions.rotation) { // #4415\n return 0;\n }\n return ((this.staggerLines || 1) * this.len) / slotCount;\n }\n if (!horiz) {\n // #7028\n const cssWidth = labelOptions.style.width;\n if (cssWidth !== void 0) {\n return parseInt(String(cssWidth), 10);\n }\n if (marginLeft) {\n return marginLeft - chart.spacing[3];\n }\n }\n // Last resort, a fraction of the available size\n return chart.chartWidth * 0.33;\n }\n /**\n * Render the axis labels and determine whether ellipsis or rotation need to\n * be applied.\n *\n * @private\n * @function Highcharts.Axis#renderUnsquish\n */\n renderUnsquish() {\n const chart = this.chart, renderer = chart.renderer, tickPositions = this.tickPositions, ticks = this.ticks, labelOptions = this.options.labels, labelStyleOptions = labelOptions.style, horiz = this.horiz, slotWidth = this.getSlotWidth(), innerWidth = Math.max(1, Math.round(slotWidth - 2 * labelOptions.padding)), attr = {}, labelMetrics = this.labelMetrics(), textOverflowOption = labelStyleOptions.textOverflow;\n let commonWidth, commonTextOverflow, maxLabelLength = 0, label, i, pos;\n // Set rotation option unless it is \"auto\", like in gauges\n if (!isString(labelOptions.rotation)) {\n // #4443\n attr.rotation = labelOptions.rotation || 0;\n }\n // Get the longest label length\n tickPositions.forEach(function (tickPosition) {\n const tick = ticks[tickPosition];\n // Replace label - sorting animation\n if (tick.movedLabel) {\n tick.replaceMovedLabel();\n }\n if (tick &&\n tick.label &&\n tick.label.textPxLength > maxLabelLength) {\n maxLabelLength = tick.label.textPxLength;\n }\n });\n this.maxLabelLength = maxLabelLength;\n // Handle auto rotation on horizontal axis\n if (this.autoRotation) {\n // Apply rotation only if the label is too wide for the slot, and\n // the label is wider than its height.\n if (maxLabelLength > innerWidth &&\n maxLabelLength > labelMetrics.h) {\n attr.rotation = this.labelRotation;\n }\n else {\n this.labelRotation = 0;\n }\n // Handle word-wrap or ellipsis on vertical axis\n }\n else if (slotWidth) {\n // For word-wrap or ellipsis\n commonWidth = innerWidth;\n if (!textOverflowOption) {\n commonTextOverflow = 'clip';\n // On vertical axis, only allow word wrap if there is room\n // for more lines.\n i = tickPositions.length;\n while (!horiz && i--) {\n pos = tickPositions[i];\n label = ticks[pos].label;\n if (label) {\n // Reset ellipsis in order to get the correct\n // bounding box (#4070)\n if (label.styles &&\n label.styles.textOverflow === 'ellipsis') {\n label.css({ textOverflow: 'clip' });\n // Set the correct width in order to read\n // the bounding box height (#4678, #5034)\n }\n else if (label.textPxLength > slotWidth) {\n label.css({ width: slotWidth + 'px' });\n }\n if (label.getBBox().height > (this.len / tickPositions.length -\n (labelMetrics.h - labelMetrics.f))) {\n label.specificTextOverflow = 'ellipsis';\n }\n }\n }\n }\n }\n // Add ellipsis if the label length is significantly longer than ideal\n if (attr.rotation) {\n commonWidth = (maxLabelLength > chart.chartHeight * 0.5 ?\n chart.chartHeight * 0.33 :\n maxLabelLength);\n if (!textOverflowOption) {\n commonTextOverflow = 'ellipsis';\n }\n }\n // Set the explicit or automatic label alignment\n this.labelAlign = labelOptions.align ||\n this.autoLabelAlign(this.labelRotation);\n if (this.labelAlign) {\n attr.align = this.labelAlign;\n }\n // Apply general and specific CSS\n tickPositions.forEach(function (pos) {\n const tick = ticks[pos], label = tick && tick.label, widthOption = labelStyleOptions.width, css = {};\n if (label) {\n // This needs to go before the CSS in old IE (#4502)\n label.attr(attr);\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else if (commonWidth &&\n !widthOption &&\n // Setting width in this case messes with the bounding box\n // (#7975)\n labelStyleOptions.whiteSpace !== 'nowrap' &&\n (\n // Speed optimizing, #7656\n commonWidth < label.textPxLength ||\n // Resetting CSS, #4928\n label.element.tagName === 'SPAN')) {\n css.width = commonWidth + 'px';\n if (!textOverflowOption) {\n css.textOverflow = (label.specificTextOverflow ||\n commonTextOverflow);\n }\n label.css(css);\n // Reset previously shortened label (#8210)\n }\n else if (label.styles &&\n label.styles.width &&\n !css.width &&\n !widthOption) {\n label.css({ width: null });\n }\n delete label.specificTextOverflow;\n tick.rotation = attr.rotation;\n }\n }, this);\n // Note: Why is this not part of getLabelPosition?\n this.tickRotCorr = renderer.rotCorr(labelMetrics.b, this.labelRotation || 0, this.side !== 0);\n }\n /**\n * Return true if the axis has associated data.\n *\n * @function Highcharts.Axis#hasData\n *\n * @return {boolean}\n * True if the axis has associated visible series and those series have\n * either valid data points or explicit `min` and `max` settings.\n */\n hasData() {\n return this.series.some(function (s) {\n return s.hasData();\n }) ||\n (this.options.showEmpty &&\n defined(this.min) &&\n defined(this.max));\n }\n /**\n * Adds the title defined in axis.options.title.\n *\n * @function Highcharts.Axis#addTitle\n *\n * @param {boolean} [display]\n * Whether or not to display the title.\n */\n addTitle(display) {\n const axis = this, renderer = axis.chart.renderer, horiz = axis.horiz, opposite = axis.opposite, options = axis.options, axisTitleOptions = options.title, styledMode = axis.chart.styledMode;\n let textAlign;\n if (!axis.axisTitle) {\n textAlign = axisTitleOptions.textAlign;\n if (!textAlign) {\n textAlign = (horiz ? {\n low: 'left',\n middle: 'center',\n high: 'right'\n } : {\n low: opposite ? 'right' : 'left',\n middle: 'center',\n high: opposite ? 'left' : 'right'\n })[axisTitleOptions.align];\n }\n axis.axisTitle = renderer\n .text(axisTitleOptions.text || '', 0, 0, axisTitleOptions.useHTML)\n .attr({\n zIndex: 7,\n rotation: axisTitleOptions.rotation,\n align: textAlign\n })\n .addClass('highcharts-axis-title');\n // #7814, don't mutate style option\n if (!styledMode) {\n axis.axisTitle.css(merge(axisTitleOptions.style));\n }\n axis.axisTitle.add(axis.axisGroup);\n axis.axisTitle.isNew = true;\n }\n // Max width defaults to the length of the axis\n if (!styledMode &&\n !axisTitleOptions.style.width &&\n !axis.isRadial) {\n axis.axisTitle.css({\n width: axis.len + 'px'\n });\n }\n // hide or show the title depending on whether showEmpty is set\n axis.axisTitle[display ? 'show' : 'hide'](display);\n }\n /**\n * Generates a tick for initial positioning.\n *\n * @private\n * @function Highcharts.Axis#generateTick\n *\n * @param {number} pos\n * The tick position in axis values.\n *\n * @param {number} [i]\n * The index of the tick in {@link Axis.tickPositions}.\n */\n generateTick(pos) {\n const axis = this, ticks = axis.ticks;\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n else {\n ticks[pos].addLabel(); // update labels depending on tick interval\n }\n }\n /**\n * Render the tick labels to a preliminary position to get their sizes\n *\n * @private\n * @function Highcharts.Axis#getOffset\n *\n * @emits Highcharts.Axis#event:afterGetOffset\n */\n getOffset() {\n const axis = this, { chart, horiz, options, side, ticks, tickPositions, coll, axisParent // Used in color axis\n } = axis, renderer = chart.renderer, invertedSide = (chart.inverted && !axis.isZAxis ?\n [1, 0, 3, 2][side] :\n side), hasData = axis.hasData(), axisTitleOptions = options.title, labelOptions = options.labels, hasCrossing = isNumber(options.crossing), axisOffset = chart.axisOffset, clipOffset = chart.clipOffset, directionFactor = [-1, 1, 1, -1][side], className = options.className;\n let showAxis, titleOffset = 0, titleOffsetOption, titleMargin = 0, labelOffset = 0, // reset\n labelOffsetPadded, lineHeightCorrection;\n // For reuse in Axis.render\n axis.showAxis = showAxis = hasData || options.showEmpty;\n // Set/reset staggerLines\n axis.staggerLines = (axis.horiz && labelOptions.staggerLines) || void 0;\n // Create the axisGroup and gridGroup elements on first iteration\n if (!axis.axisGroup) {\n const createGroup = (name, suffix, zIndex) => renderer.g(name)\n .attr({ zIndex })\n .addClass(`highcharts-${coll.toLowerCase()}${suffix} ` +\n (this.isRadial ? `highcharts-radial-axis${suffix} ` : '') +\n (className || ''))\n .add(axisParent);\n axis.gridGroup = createGroup('grid', '-grid', options.gridZIndex);\n axis.axisGroup = createGroup('axis', '', options.zIndex);\n axis.labelGroup = createGroup('axis-labels', '-labels', labelOptions.zIndex);\n }\n if (hasData || axis.isLinked) {\n // Generate ticks\n tickPositions.forEach(function (pos) {\n // i is not used here, but may be used in overrides\n axis.generateTick(pos);\n });\n axis.renderUnsquish();\n // Left side must be align: right and right side must\n // have align: left for labels\n axis.reserveSpaceDefault = (side === 0 ||\n side === 2 ||\n { 1: 'left', 3: 'right' }[side] === axis.labelAlign);\n if (pick(labelOptions.reserveSpace, hasCrossing ? false : null, axis.labelAlign === 'center' ? true : null, axis.reserveSpaceDefault)) {\n tickPositions.forEach(function (pos) {\n // get the highest offset\n labelOffset = Math.max(ticks[pos].getLabelSize(), labelOffset);\n });\n }\n if (axis.staggerLines) {\n labelOffset *= axis.staggerLines;\n }\n axis.labelOffset = labelOffset * (axis.opposite ? -1 : 1);\n }\n else { // doesn't have data\n objectEach(ticks, function (tick, n) {\n tick.destroy();\n delete ticks[n];\n });\n }\n if (axisTitleOptions &&\n axisTitleOptions.text &&\n axisTitleOptions.enabled !== false) {\n axis.addTitle(showAxis);\n if (showAxis &&\n !hasCrossing &&\n axisTitleOptions.reserveSpace !== false) {\n axis.titleOffset = titleOffset =\n axis.axisTitle.getBBox()[horiz ? 'height' : 'width'];\n titleOffsetOption = axisTitleOptions.offset;\n titleMargin = defined(titleOffsetOption) ?\n 0 :\n pick(axisTitleOptions.margin, horiz ? 5 : 10);\n }\n }\n // Render the axis line\n axis.renderLine();\n // handle automatic or user set offset\n axis.offset = directionFactor * pick(options.offset, axisOffset[side] ? axisOffset[side] + (options.margin || 0) : 0);\n axis.tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }; // polar\n if (side === 0) {\n lineHeightCorrection = -axis.labelMetrics().h;\n }\n else if (side === 2) {\n lineHeightCorrection = axis.tickRotCorr.y;\n }\n else {\n lineHeightCorrection = 0;\n }\n // Find the padded label offset\n labelOffsetPadded = Math.abs(labelOffset) + titleMargin;\n if (labelOffset) {\n labelOffsetPadded -= lineHeightCorrection;\n labelOffsetPadded += directionFactor * (horiz ?\n pick(labelOptions.y, axis.tickRotCorr.y +\n directionFactor * labelOptions.distance) :\n pick(labelOptions.x, directionFactor * labelOptions.distance));\n }\n axis.axisTitleMargin = pick(titleOffsetOption, labelOffsetPadded);\n if (axis.getMaxLabelDimensions) {\n axis.maxLabelDimensions = axis.getMaxLabelDimensions(ticks, tickPositions);\n }\n // Due to GridAxis.tickSize, tickSize should be calculated after ticks\n // has rendered.\n if (coll !== 'colorAxis') {\n const tickSize = this.tickSize('tick');\n axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +\n directionFactor * axis.offset, labelOffsetPadded, // #3027\n tickPositions && tickPositions.length && tickSize ?\n tickSize[0] + directionFactor * axis.offset :\n 0 // #4866\n );\n // Decide the clipping needed to keep the graph inside\n // the plot area and axis lines\n const clip = !axis.axisLine || options.offset ?\n 0 :\n // #4308, #4371:\n Math.floor(axis.axisLine.strokeWidth() / 2) * 2;\n clipOffset[invertedSide] =\n Math.max(clipOffset[invertedSide], clip);\n }\n fireEvent(this, 'afterGetOffset');\n }\n /**\n * Internal function to get the path for the axis line. Extended for polar\n * charts.\n *\n * @function Highcharts.Axis#getLinePath\n *\n * @param {number} lineWidth\n * The line width in pixels.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n getLinePath(lineWidth) {\n const chart = this.chart, opposite = this.opposite, offset = this.offset, horiz = this.horiz, lineLeft = this.left + (opposite ? this.width : 0) + offset, lineTop = chart.chartHeight - this.bottom -\n (opposite ? this.height : 0) + offset;\n if (opposite) {\n lineWidth *= -1; // crispify the other way - #1480, #1687\n }\n return chart.renderer\n .crispLine([\n [\n 'M',\n horiz ?\n this.left :\n lineLeft,\n horiz ?\n lineTop :\n this.top\n ],\n [\n 'L',\n horiz ?\n chart.chartWidth - this.right :\n lineLeft,\n horiz ?\n lineTop :\n chart.chartHeight - this.bottom\n ]\n ], lineWidth);\n }\n /**\n * Render the axis line. Called internally when rendering and redrawing the\n * axis.\n *\n * @function Highcharts.Axis#renderLine\n */\n renderLine() {\n if (!this.axisLine) {\n this.axisLine = this.chart.renderer.path()\n .addClass('highcharts-axis-line')\n .add(this.axisGroup);\n if (!this.chart.styledMode) {\n this.axisLine.attr({\n stroke: this.options.lineColor,\n 'stroke-width': this.options.lineWidth,\n zIndex: 7\n });\n }\n }\n }\n /**\n * Position the axis title.\n *\n * @private\n * @function Highcharts.Axis#getTitlePosition\n *\n * @return {Highcharts.PositionObject}\n * X and Y positions for the title.\n */\n getTitlePosition(axisTitle) {\n // compute anchor points for each of the title align options\n const horiz = this.horiz, axisLeft = this.left, axisTop = this.top, axisLength = this.len, axisTitleOptions = this.options.title, margin = horiz ? axisLeft : axisTop, opposite = this.opposite, offset = this.offset, xOption = axisTitleOptions.x, yOption = axisTitleOptions.y, fontMetrics = this.chart.renderer.fontMetrics(axisTitle), \n // The part of a multiline text that is below the baseline of the\n // first line. Subtract 1 to preserve pixel-perfectness from the\n // old behaviour (v5.0.12), where only one line was allowed.\n textHeightOvershoot = axisTitle ? Math.max(axisTitle.getBBox(false, 0).height - fontMetrics.h - 1, 0) : 0, \n // the position in the length direction of the axis\n alongAxis = ({\n low: margin + (horiz ? 0 : axisLength),\n middle: margin + axisLength / 2,\n high: margin + (horiz ? axisLength : 0)\n })[axisTitleOptions.align], \n // the position in the perpendicular direction of the axis\n offAxis = (horiz ? axisTop + this.height : axisLeft) +\n (horiz ? 1 : -1) * // horizontal axis reverses the margin\n (opposite ? -1 : 1) * // so does opposite axes\n (this.axisTitleMargin || 0) +\n [\n -textHeightOvershoot,\n textHeightOvershoot,\n fontMetrics.f,\n -textHeightOvershoot // left\n ][this.side], titlePosition = {\n x: horiz ?\n alongAxis + xOption :\n offAxis + (opposite ? this.width : 0) + offset + xOption,\n y: horiz ?\n offAxis + yOption - (opposite ? this.height : 0) + offset :\n alongAxis + yOption\n };\n fireEvent(this, 'afterGetTitlePosition', { titlePosition: titlePosition });\n return titlePosition;\n }\n /**\n * Render a minor tick into the given position. If a minor tick already\n * exists in this position, move it.\n *\n * @function Highcharts.Axis#renderMinorTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n renderMinorTick(pos, slideIn) {\n const axis = this;\n const minorTicks = axis.minorTicks;\n if (!minorTicks[pos]) {\n minorTicks[pos] = new Tick(axis, pos, 'minor');\n }\n // Render new ticks in old position\n if (slideIn && minorTicks[pos].isNew) {\n minorTicks[pos].render(null, true);\n }\n minorTicks[pos].render(null, false, 1);\n }\n /**\n * Render a major tick into the given position. If a tick already exists\n * in this position, move it.\n *\n * @function Highcharts.Axis#renderTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {number} i\n * The tick index.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n renderTick(pos, i, slideIn) {\n const axis = this, isLinked = axis.isLinked, ticks = axis.ticks;\n // Linked axes need an extra check to find out if\n if (!isLinked ||\n (pos >= axis.min && pos <= axis.max) ||\n (axis.grid && axis.grid.isColumn)) {\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n // NOTE this seems like overkill. Could be handled in tick.render by\n // setting old position in attr, then set new position in animate.\n // render new ticks in old position\n if (slideIn && ticks[pos].isNew) {\n // Start with negative opacity so that it is visible from\n // halfway into the animation\n ticks[pos].render(i, true, -1);\n }\n ticks[pos].render(i);\n }\n }\n /**\n * Render the axis.\n *\n * @private\n * @function Highcharts.Axis#render\n *\n * @emits Highcharts.Axis#event:afterRender\n */\n render() {\n const axis = this, chart = axis.chart, log = axis.logarithmic, renderer = chart.renderer, options = axis.options, isLinked = axis.isLinked, tickPositions = axis.tickPositions, axisTitle = axis.axisTitle, ticks = axis.ticks, minorTicks = axis.minorTicks, alternateBands = axis.alternateBands, stackLabelOptions = options.stackLabels, alternateGridColor = options.alternateGridColor, crossing = options.crossing, tickmarkOffset = axis.tickmarkOffset, axisLine = axis.axisLine, showAxis = axis.showAxis, animation = animObject(renderer.globalAnimation);\n let from, to;\n // Reset\n axis.labelEdge.length = 0;\n axis.overlap = false;\n // Mark all elements inActive before we go over and mark the active ones\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n objectEach(coll, function (tick) {\n tick.isActive = false;\n });\n });\n // Crossing\n if (isNumber(crossing)) {\n const otherAxis = this.isXAxis ? chart.yAxis[0] : chart.xAxis[0], directionFactor = [1, -1, -1, 1][this.side];\n if (otherAxis) {\n this.offset = directionFactor * otherAxis.toPixels(crossing, true);\n }\n }\n // If the series has data draw the ticks. Else only the line and title\n if (axis.hasData() || isLinked) {\n const slideInTicks = axis.chart.hasRendered &&\n axis.old && isNumber(axis.old.min);\n // minor ticks\n if (axis.minorTickInterval && !axis.categories) {\n axis.getMinorTickPositions().forEach(function (pos) {\n axis.renderMinorTick(pos, slideInTicks);\n });\n }\n // Major ticks. Pull out the first item and render it last so that\n // we can get the position of the neighbour label. #808.\n if (tickPositions.length) { // #1300\n tickPositions.forEach(function (pos, i) {\n axis.renderTick(pos, i, slideInTicks);\n });\n // In a categorized axis, the tick marks are displayed\n // between labels. So we need to add a tick mark and\n // grid line at the left edge of the X axis.\n if (tickmarkOffset && (axis.min === 0 || axis.single)) {\n if (!ticks[-1]) {\n ticks[-1] = new Tick(axis, -1, null, true);\n }\n ticks[-1].render(-1);\n }\n }\n // alternate grid color\n if (alternateGridColor) {\n tickPositions.forEach(function (pos, i) {\n to = typeof tickPositions[i + 1] !== 'undefined' ?\n tickPositions[i + 1] + tickmarkOffset :\n axis.max - tickmarkOffset;\n if (i % 2 === 0 &&\n pos < axis.max &&\n to <= axis.max + (chart.polar ?\n -tickmarkOffset :\n tickmarkOffset)) { // #2248, #4660\n if (!alternateBands[pos]) {\n // Should be imported from PlotLineOrBand.js, but\n // the dependency cycle with axis is a problem\n alternateBands[pos] = new H.PlotLineOrBand(axis);\n }\n from = pos + tickmarkOffset; // #949\n alternateBands[pos].options = {\n from: log ? log.lin2log(from) : from,\n to: log ? log.lin2log(to) : to,\n color: alternateGridColor,\n className: 'highcharts-alternate-grid'\n };\n alternateBands[pos].render();\n alternateBands[pos].isActive = true;\n }\n });\n }\n // custom plot lines and bands\n if (!axis._addedPlotLB) { // only first time\n axis._addedPlotLB = true;\n (options.plotLines || [])\n .concat(options.plotBands || [])\n .forEach(function (plotLineOptions) {\n axis\n .addPlotBandOrLine(plotLineOptions);\n });\n }\n } // end if hasData\n // Remove inactive ticks\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n const forDestruction = [], delay = animation.duration, destroyInactiveItems = function () {\n let i = forDestruction.length;\n while (i--) {\n // When resizing rapidly, the same items\n // may be destroyed in different timeouts,\n // or the may be reactivated\n if (coll[forDestruction[i]] &&\n !coll[forDestruction[i]].isActive) {\n coll[forDestruction[i]].destroy();\n delete coll[forDestruction[i]];\n }\n }\n };\n objectEach(coll, function (tick, pos) {\n if (!tick.isActive) {\n // Render to zero opacity\n tick.render(pos, false, 0);\n tick.isActive = false;\n forDestruction.push(pos);\n }\n });\n // When the objects are finished fading out, destroy them\n syncTimeout(destroyInactiveItems, coll === alternateBands ||\n !chart.hasRendered ||\n !delay ?\n 0 :\n delay);\n });\n // Set the axis line path\n if (axisLine) {\n axisLine[axisLine.isPlaced ? 'animate' : 'attr']({\n d: this.getLinePath(axisLine.strokeWidth())\n });\n axisLine.isPlaced = true;\n // Show or hide the line depending on options.showEmpty\n axisLine[showAxis ? 'show' : 'hide'](showAxis);\n }\n if (axisTitle && showAxis) {\n axisTitle[axisTitle.isNew ? 'attr' : 'animate'](axis.getTitlePosition(axisTitle));\n axisTitle.isNew = false;\n }\n // Stacked totals:\n if (stackLabelOptions && stackLabelOptions.enabled && axis.stacking) {\n axis.stacking.renderStackTotals();\n }\n // End stacked totals\n // Record old scaling for updating/animation\n axis.old = {\n len: axis.len,\n max: axis.max,\n min: axis.min,\n transA: axis.transA,\n userMax: axis.userMax,\n userMin: axis.userMin\n };\n axis.isDirty = false;\n fireEvent(this, 'afterRender');\n }\n /**\n * Redraw the axis to reflect changes in the data or axis extremes. Called\n * internally from Highcharts.Chart#redraw.\n *\n * @private\n * @function Highcharts.Axis#redraw\n */\n redraw() {\n if (this.visible) {\n // render the axis\n this.render();\n // move plot lines and bands\n this.plotLinesAndBands.forEach(function (plotLine) {\n plotLine.render();\n });\n }\n // mark associated series as dirty and ready for redraw\n this.series.forEach(function (series) {\n series.isDirty = true;\n });\n }\n /**\n * Returns an array of axis properties, that should be untouched during\n * reinitialization.\n *\n * @private\n * @function Highcharts.Axis#getKeepProps\n */\n getKeepProps() {\n return (this.keepProps || Axis.keepProps);\n }\n /**\n * Destroys an Axis instance. See {@link Axis#remove} for the API endpoint\n * to fully remove the axis.\n *\n * @private\n * @function Highcharts.Axis#destroy\n *\n * @param {boolean} [keepEvents]\n * Whether to preserve events, used internally in Axis.update.\n */\n destroy(keepEvents) {\n const axis = this, plotLinesAndBands = axis.plotLinesAndBands, eventOptions = this.eventOptions;\n fireEvent(this, 'destroy', { keepEvents: keepEvents });\n // Remove the events\n if (!keepEvents) {\n removeEvent(axis);\n }\n // Destroy collections\n [axis.ticks, axis.minorTicks, axis.alternateBands].forEach(function (coll) {\n destroyObjectProperties(coll);\n });\n if (plotLinesAndBands) {\n let i = plotLinesAndBands.length;\n while (i--) { // #1975\n plotLinesAndBands[i].destroy();\n }\n }\n // Destroy elements\n ['axisLine', 'axisTitle', 'axisGroup',\n 'gridGroup', 'labelGroup', 'cross', 'scrollbar'].forEach(function (prop) {\n if (axis[prop]) {\n axis[prop] = axis[prop].destroy();\n }\n });\n // Destroy each generated group for plotlines and plotbands\n for (const plotGroup in axis.plotLinesAndBandsGroups) { // eslint-disable-line guard-for-in\n axis.plotLinesAndBandsGroups[plotGroup] =\n axis.plotLinesAndBandsGroups[plotGroup].destroy();\n }\n // Delete all properties and fall back to the prototype.\n objectEach(axis, function (val, key) {\n if (axis.getKeepProps().indexOf(key) === -1) {\n delete axis[key];\n }\n });\n this.eventOptions = eventOptions;\n }\n /**\n * Internal function to draw a crosshair.\n *\n * @function Highcharts.Axis#drawCrosshair\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments from the modified pointer event, extended with\n * `chartX` and `chartY`\n *\n * @param {Highcharts.Point} [point]\n * The Point object if the crosshair snaps to points.\n *\n * @emits Highcharts.Axis#event:afterDrawCrosshair\n * @emits Highcharts.Axis#event:drawCrosshair\n */\n drawCrosshair(e, point) {\n const options = this.crosshair, snap = pick(options && options.snap, true), chart = this.chart;\n let path, pos, categorized, graphic = this.cross, crossOptions;\n fireEvent(this, 'drawCrosshair', { e: e, point: point });\n // Use last available event when updating non-snapped crosshairs without\n // mouse interaction (#5287)\n if (!e) {\n e = this.cross && this.cross.e;\n }\n if (\n // Disabled in options\n !options ||\n // Snap\n ((defined(point) || !snap) === false)) {\n this.hideCrosshair();\n }\n else {\n // Get the path\n if (!snap) {\n pos = e &&\n (this.horiz ?\n e.chartX - this.pos :\n this.len - e.chartY + this.pos);\n }\n else if (defined(point)) {\n // #3834\n pos = pick(this.coll !== 'colorAxis' ?\n point.crosshairPos : // 3D axis extension\n null, this.isXAxis ?\n point.plotX :\n this.len - point.plotY);\n }\n if (defined(pos)) {\n crossOptions = {\n // value, only used on radial\n value: point && (this.isXAxis ?\n point.x :\n pick(point.stackY, point.y)),\n translatedValue: pos\n };\n if (chart.polar) {\n // Additional information required for crosshairs in\n // polar chart\n extend(crossOptions, {\n isCrosshair: true,\n chartX: e && e.chartX,\n chartY: e && e.chartY,\n point: point\n });\n }\n path = this.getPlotLinePath(crossOptions) ||\n null; // #3189\n }\n if (!defined(path)) {\n this.hideCrosshair();\n return;\n }\n categorized = this.categories && !this.isRadial;\n // Draw the cross\n if (!graphic) {\n this.cross = graphic = chart.renderer\n .path()\n .addClass('highcharts-crosshair highcharts-crosshair-' +\n (categorized ? 'category ' : 'thin ') +\n (options.className || ''))\n .attr({\n zIndex: pick(options.zIndex, 2)\n })\n .add();\n // Presentational attributes\n if (!chart.styledMode) {\n graphic.attr({\n stroke: options.color ||\n (categorized ?\n Color\n .parse(\"#ccd3ff\" /* Palette.highlightColor20 */)\n .setOpacity(0.25)\n .get() :\n \"#cccccc\" /* Palette.neutralColor20 */),\n 'stroke-width': pick(options.width, 1)\n }).css({\n 'pointer-events': 'none'\n });\n if (options.dashStyle) {\n graphic.attr({\n dashstyle: options.dashStyle\n });\n }\n }\n }\n graphic.show().attr({\n d: path\n });\n if (categorized && !options.width) {\n graphic.attr({\n 'stroke-width': this.transA\n });\n }\n this.cross.e = e;\n }\n fireEvent(this, 'afterDrawCrosshair', { e: e, point: point });\n }\n /**\n * Hide the crosshair if visible.\n *\n * @function Highcharts.Axis#hideCrosshair\n */\n hideCrosshair() {\n if (this.cross) {\n this.cross.hide();\n }\n fireEvent(this, 'afterHideCrosshair');\n }\n /**\n * Check whether the chart has vertical panning ('y' or 'xy' type).\n *\n * @private\n * @function Highcharts.Axis#hasVerticalPanning\n */\n hasVerticalPanning() {\n const panningOptions = this.chart.options.chart.panning;\n return Boolean(panningOptions &&\n panningOptions.enabled && // #14624\n /y/.test(panningOptions.type));\n }\n /**\n * Update an axis object with a new set of options. The options are merged\n * with the existing options, so only new or altered options need to be\n * specified.\n *\n * @sample highcharts/members/axis-update/\n * Axis update demo\n *\n * @function Highcharts.Axis#update\n *\n * @param {Highcharts.AxisOptions} options\n * The new options that will be merged in with existing options on the axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n update(options, redraw) {\n const chart = this.chart;\n options = merge(this.userOptions, options);\n this.destroy(true);\n this.init(chart, options);\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n }\n /**\n * Remove the axis from the chart.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Axis#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart following the remove.\n */\n remove(redraw) {\n const chart = this.chart, key = this.coll, // xAxis or yAxis\n axisSeries = this.series;\n let i = axisSeries.length;\n // Remove associated series (#2687)\n while (i--) {\n if (axisSeries[i]) {\n axisSeries[i].remove(false);\n }\n }\n // Remove the axis\n erase(chart.axes, this);\n erase(chart[key], this);\n chart[key].forEach(function (axis, i) {\n // Re-index, #1706, #8075\n axis.options.index = axis.userOptions.index = i;\n });\n this.destroy();\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n }\n /**\n * Update the axis title by options after render time.\n *\n * @sample highcharts/members/axis-settitle/\n * Set a new Y axis title\n *\n * @function Highcharts.Axis#setTitle\n *\n * @param {Highcharts.AxisTitleOptions} titleOptions\n * The additional title options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after setting the title.\n */\n setTitle(titleOptions, redraw) {\n this.update({ title: titleOptions }, redraw);\n }\n /**\n * Set new axis categories and optionally redraw.\n *\n * @sample highcharts/members/axis-setcategories/\n * Set categories by click on a button\n *\n * @function Highcharts.Axis#setCategories\n *\n * @param {Array} categories\n * The new categories.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n */\n setCategories(categories, redraw) {\n this.update({ categories: categories }, redraw);\n }\n }\n /* *\n *\n * Static Properties\n *\n * */\n Axis.defaultOptions = AxisDefaults.defaultXAxisOptions;\n // Properties to survive after destroy, needed for Axis.update (#4317,\n // #5773, #5881).\n Axis.keepProps = [\n 'extKey',\n 'hcEvents',\n 'names',\n 'series',\n 'userMax',\n 'userMin'\n ];\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for the path on the Axis to be calculated.\n * @interface Highcharts.AxisPlotLinePathOptionsObject\n */ /**\n * Axis value.\n * @name Highcharts.AxisPlotLinePathOptionsObject#value\n * @type {number|undefined}\n */ /**\n * Line width used for calculation crisp line coordinates. Defaults to 1.\n * @name Highcharts.AxisPlotLinePathOptionsObject#lineWidth\n * @type {number|undefined}\n */ /**\n * If `false`, the function will return null when it falls outside the axis\n * bounds. If `true`, the function will return a path aligned to the plot area\n * sides if it falls outside. If `pass`, it will return a path outside.\n * @name Highcharts.AxisPlotLinePathOptionsObject#force\n * @type {string|boolean|undefined}\n */ /**\n * Used in Highcharts Stock. When `true`, plot paths\n * (crosshair, plotLines, gridLines)\n * will be rendered on all axes when defined on the first axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#acrossPanes\n * @type {boolean|undefined}\n */ /**\n * Use old coordinates (for resizing and rescaling).\n * If not set, defaults to `false`.\n * @name Highcharts.AxisPlotLinePathOptionsObject#old\n * @type {boolean|undefined}\n */ /**\n * If given, return the plot line path of a pixel position on the axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#translatedValue\n * @type {number|undefined}\n */ /**\n * Used in Polar axes. Reverse the positions for concatenation of polygonal\n * plot bands\n * @name Highcharts.AxisPlotLinePathOptionsObject#reverse\n * @type {boolean|undefined}\n */\n /**\n * Options for crosshairs on axes.\n *\n * @product highstock\n *\n * @typedef {Highcharts.XAxisCrosshairOptions|Highcharts.YAxisCrosshairOptions} Highcharts.AxisCrosshairOptions\n */\n /**\n * @typedef {\"navigator\"|\"pan\"|\"rangeSelectorButton\"|\"rangeSelectorInput\"|\"scrollbar\"|\"traverseUpButton\"|\"zoom\"} Highcharts.AxisExtremesTriggerValue\n */\n /**\n * @callback Highcharts.AxisEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n */\n /**\n * @callback Highcharts.AxisLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} ctx\n *\n * @return {string}\n */\n /**\n * @interface Highcharts.AxisLabelsFormatterContextObject\n */ /**\n * The axis item of the label\n * @name Highcharts.AxisLabelsFormatterContextObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The chart instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#chart\n * @type {Highcharts.Chart}\n */ /**\n * Default formatting of date/time labels.\n * @name Highcharts.AxisLabelsFormatterContextObject#dateTimeLabelFormat\n * @type {string|undefined}\n */ /**\n * Whether the label belongs to the first tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isFirst\n * @type {boolean}\n */ /**\n * Whether the label belongs to the last tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isLast\n * @type {boolean}\n */ /**\n * The position on the axis in terms of axis values. For category axes, a\n * zero-based index. For datetime axes, the JavaScript time in milliseconds\n * since 1970.\n * @name Highcharts.AxisLabelsFormatterContextObject#pos\n * @type {number}\n */ /**\n * The preformatted text as the result of the default formatting. For example\n * dates will be formatted as strings, and numbers with language-specific comma\n * separators, thousands separators and numeric symbols like `k` or `M`.\n * @name Highcharts.AxisLabelsFormatterContextObject#text\n * @type {string|undefined}\n */ /**\n * The Tick instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#tick\n * @type {Highcharts.Tick}\n */ /**\n * This can be either a numeric value or a category string.\n * @name Highcharts.AxisLabelsFormatterContextObject#value\n * @type {number|string}\n */\n /**\n * Options for axes.\n *\n * @typedef {Highcharts.XAxisOptions|Highcharts.YAxisOptions|Highcharts.ZAxisOptions} Highcharts.AxisOptions\n */\n /**\n * @callback Highcharts.AxisPointBreakEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisPointBreakEventObject} evt\n */\n /**\n * @interface Highcharts.AxisPointBreakEventObject\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#brk\n * @type {Highcharts.Dictionary}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#point\n * @type {Highcharts.Point}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#type\n * @type {\"pointBreak\"|\"pointInBreak\"}\n */\n /**\n * @callback Highcharts.AxisSetExtremesEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisSetExtremesEventObject} evt\n */\n /**\n * @interface Highcharts.AxisSetExtremesEventObject\n * @extends Highcharts.ExtremesObject\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#trigger\n * @type {Highcharts.AxisExtremesTriggerValue|string}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#type\n * @type {\"setExtremes\"}\n */\n /**\n * @callback Highcharts.AxisTickPositionerCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @return {Highcharts.AxisTickPositionsArray}\n */\n /**\n * @interface Highcharts.AxisTickPositionsArray\n * @augments Array\n */\n /**\n * @typedef {\"high\"|\"low\"|\"middle\"} Highcharts.AxisTitleAlignValue\n */\n /**\n * @typedef {Highcharts.XAxisTitleOptions|Highcharts.YAxisTitleOptions|Highcharts.ZAxisTitleOptions} Highcharts.AxisTitleOptions\n */\n /**\n * @typedef {\"linear\"|\"logarithmic\"|\"datetime\"|\"category\"|\"treegrid\"} Highcharts.AxisTypeValue\n */\n /**\n * The returned object literal from the {@link Highcharts.Axis#getExtremes}\n * function.\n *\n * @interface Highcharts.ExtremesObject\n */ /**\n * The maximum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMax\n * @type {number}\n */ /**\n * The minimum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMin\n * @type {number}\n */ /**\n * The maximum axis value, either automatic or set manually. If the `max` option\n * is not set, `maxPadding` is 0 and `endOnTick` is false, this value will be\n * the same as `dataMax`.\n * @name Highcharts.ExtremesObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually. If the `min` option\n * is not set, `minPadding` is 0 and `startOnTick` is false, this value will be\n * the same as `dataMin`.\n * @name Highcharts.ExtremesObject#min\n * @type {number}\n */ /**\n * The user defined maximum, either from the `max` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMax\n * @type {number|undefined}\n */ /**\n * The user defined minimum, either from the `min` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMin\n * @type {number|undefined}\n */\n /**\n * Formatter function for the text of a crosshair label.\n *\n * @callback Highcharts.XAxisCrosshairLabelFormatterCallbackFunction\n *\n * @param {Highcharts.Axis} this\n * Axis context\n *\n * @param {number} value\n * Y value of the data point\n *\n * @return {string}\n */\n ''; // keeps doclets above in JS file\n\n return Axis;\n });\n _registerModule(_modules, 'Core/Axis/DateTimeAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { addEvent, getMagnitude, normalizeTickInterval, timeUnits } = U;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DateTimeAxis;\n (function (DateTimeAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis class with date and time support.\n * @private\n */\n function compose(AxisClass) {\n if (U.pushUnique(composedMembers, AxisClass)) {\n AxisClass.keepProps.push('dateTime');\n const axisProto = AxisClass.prototype;\n axisProto.getTimeTicks = getTimeTicks;\n addEvent(AxisClass, 'init', onInit);\n }\n return AxisClass;\n }\n DateTimeAxis.compose = compose;\n /**\n * Set the tick positions to a time unit that makes sense, for example\n * on the first of each month or on every Monday. Return an array with\n * the time positions. Used in datetime axes as well as for grouping\n * data on a datetime axis.\n *\n * @private\n * @function Highcharts.Axis#getTimeTicks\n * @param {Highcharts.TimeNormalizeObject} normalizedInterval\n * The interval in axis values (ms) and thecount.\n * @param {number} min\n * The minimum in axis values.\n * @param {number} max\n * The maximum in axis values.\n */\n function getTimeTicks() {\n return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n }\n /**\n * @private\n */\n function onInit(e) {\n const axis = this;\n const options = e.userOptions;\n if (options.type !== 'datetime') {\n axis.dateTime = void 0;\n return;\n }\n if (!axis.dateTime) {\n axis.dateTime = new Additions(axis);\n }\n }\n /* *\n *\n * Classes\n *\n * */\n class Additions {\n /* *\n *\n * Constructors\n *\n * */\n constructor(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get a normalized tick interval for dates. Returns a configuration\n * object with unit range (interval), count and name. Used to prepare\n * data for `getTimeTicks`. Previously this logic was part of\n * getTimeTicks, but as `getTimeTicks` now runs of segments in stock\n * charts, the normalizing logic was extracted in order to prevent it\n * for running over again for each segment having the same interval.\n * #662, #697.\n * @private\n */\n normalizeTimeTickInterval(tickInterval, unitsOption) {\n const units = (unitsOption || [[\n // unit name\n 'millisecond',\n // allowed multiples\n [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]\n ], [\n 'second',\n [1, 2, 5, 10, 15, 30]\n ], [\n 'minute',\n [1, 2, 5, 10, 15, 30]\n ], [\n 'hour',\n [1, 2, 3, 4, 6, 8, 12]\n ], [\n 'day',\n [1, 2]\n ], [\n 'week',\n [1, 2]\n ], [\n 'month',\n [1, 2, 3, 4, 6]\n ], [\n 'year',\n null\n ]]);\n let unit = units[units.length - 1], // default unit is years\n interval = timeUnits[unit[0]], multiples = unit[1], i;\n // loop through the units to find the one that best fits the\n // tickInterval\n for (i = 0; i < units.length; i++) {\n unit = units[i];\n interval = timeUnits[unit[0]];\n multiples = unit[1];\n if (units[i + 1]) {\n // lessThan is in the middle between the highest multiple\n // and the next unit.\n const lessThan = (interval *\n multiples[multiples.length - 1] +\n timeUnits[units[i + 1][0]]) / 2;\n // break and keep the current unit\n if (tickInterval <= lessThan) {\n break;\n }\n }\n }\n // prevent 2.5 years intervals, though 25, 250 etc. are allowed\n if (interval === timeUnits.year && tickInterval < 5 * interval) {\n multiples = [1, 2, 5];\n }\n // get the count\n const count = normalizeTickInterval(tickInterval / interval, multiples, unit[0] === 'year' ? // #1913, #2360\n Math.max(getMagnitude(tickInterval / interval), 1) :\n 1);\n return {\n unitRange: interval,\n count: count,\n unitName: unit[0]\n };\n }\n /**\n * Get the best date format for a specific X value based on the closest\n * point range on the axis.\n *\n * @private\n */\n getXDateFormat(x, dateTimeLabelFormats) {\n const { axis } = this, time = axis.chart.time;\n return axis.closestPointRange ?\n time.getDateFormat(axis.closestPointRange, x, axis.options.startOfWeek, dateTimeLabelFormats) ||\n // #2546, 2581\n time.resolveDTLFormat(dateTimeLabelFormats.year).main :\n time.resolveDTLFormat(dateTimeLabelFormats.day).main;\n }\n }\n DateTimeAxis.Additions = Additions;\n })(DateTimeAxis || (DateTimeAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return DateTimeAxis;\n });\n _registerModule(_modules, 'Core/Axis/LogarithmicAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { addEvent, normalizeTickInterval, pick } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n */\n var LogarithmicAxis;\n (function (LogarithmicAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Provides logarithmic support for axes.\n * @private\n */\n function compose(AxisClass) {\n if (U.pushUnique(composedMembers, AxisClass)) {\n AxisClass.keepProps.push('logarithmic');\n addEvent(AxisClass, 'init', onInit);\n addEvent(AxisClass, 'afterInit', onAfterInit);\n }\n return AxisClass;\n }\n LogarithmicAxis.compose = compose;\n /**\n * @private\n */\n function onInit(e) {\n const axis = this;\n const options = e.userOptions;\n let logarithmic = axis.logarithmic;\n if (options.type !== 'logarithmic') {\n axis.logarithmic = void 0;\n }\n else {\n if (!logarithmic) {\n logarithmic = axis.logarithmic = new Additions(axis);\n }\n }\n }\n /**\n * @private\n */\n function onAfterInit() {\n const axis = this;\n const log = axis.logarithmic;\n // extend logarithmic axis\n if (log) {\n axis.lin2val = function (num) {\n return log.lin2log(num);\n };\n axis.val2lin = function (num) {\n return log.log2lin(num);\n };\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides logarithmic support for axes.\n * @private\n * @class\n */\n class Additions {\n /* *\n *\n * Constructors\n *\n * */\n constructor(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the tick positions of a logarithmic axis.\n */\n getLogTickPositions(interval, min, max, minor) {\n const log = this;\n const axis = log.axis;\n const axisLength = axis.len;\n const options = axis.options;\n // Since we use this method for both major and minor ticks,\n // use a local variable and return the result\n let positions = [];\n // Reset\n if (!minor) {\n log.minorAutoInterval = void 0;\n }\n // First case: All ticks fall on whole logarithms: 1, 10, 100 etc.\n if (interval >= 0.5) {\n interval = Math.round(interval);\n positions = axis.getLinearTickPositions(interval, min, max);\n // Second case: We need intermediary ticks. For example\n // 1, 2, 4, 6, 8, 10, 20, 40 etc.\n }\n else if (interval >= 0.08) {\n const roundedMin = Math.floor(min);\n let intermediate, i, j, len, pos, lastPos, break2;\n if (interval > 0.3) {\n intermediate = [1, 2, 4];\n // 0.2 equals five minor ticks per 1, 10, 100 etc\n }\n else if (interval > 0.15) {\n intermediate = [1, 2, 4, 6, 8];\n }\n else { // 0.1 equals ten minor ticks per 1, 10, 100 etc\n intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n }\n for (i = roundedMin; i < max + 1 && !break2; i++) {\n len = intermediate.length;\n for (j = 0; j < len && !break2; j++) {\n pos = log.log2lin(log.lin2log(i) * intermediate[j]);\n // #1670, lastPos is #3113\n if (pos > min &&\n (!minor || lastPos <= max) &&\n typeof lastPos !== 'undefined') {\n positions.push(lastPos);\n }\n if (lastPos > max) {\n break2 = true;\n }\n lastPos = pos;\n }\n }\n // Third case: We are so deep in between whole logarithmic values,\n // that we might as well handle the tick positions like a linear\n // axis. For example 1.01, 1.02, 1.03, 1.04.\n }\n else {\n const realMin = log.lin2log(min), realMax = log.lin2log(max), tickIntervalOption = minor ?\n axis.getMinorTickInterval() :\n options.tickInterval, filteredTickIntervalOption = tickIntervalOption === 'auto' ?\n null :\n tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?\n axisLength / axis.tickPositions.length :\n axisLength;\n interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *\n tickPixelIntervalOption / (totalPixelLength || 1));\n interval = normalizeTickInterval(interval);\n positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);\n if (!minor) {\n log.minorAutoInterval = interval / 5;\n }\n }\n // Set the axis-level tickInterval variable\n if (!minor) {\n axis.tickInterval = interval;\n }\n return positions;\n }\n lin2log(num) {\n return Math.pow(10, num);\n }\n log2lin(num) {\n return Math.log(num) / Math.LN10;\n }\n }\n LogarithmicAxis.Additions = Additions;\n })(LogarithmicAxis || (LogarithmicAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LogarithmicAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { erase, extend, isNumber } = U;\n /* *\n *\n * Composition\n *\n * */\n var PlotLineOrBandAxis;\n (function (PlotLineOrBandAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Variables\n *\n * */\n let PlotLineOrBandClass;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add a plot band after render time.\n *\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#addPlotBand\n *\n * @param {Highcharts.AxisPlotBandsOptions} options\n * A configuration object for the plot band, as defined in\n * [xAxis.plotBands](https://api.highcharts.com/highcharts/xAxis.plotBands).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot band.\n */\n function addPlotBand(options) {\n return this.addPlotBandOrLine(options, 'plotBands');\n }\n /**\n * Add a plot band or plot line after render time. Called from\n * addPlotBand and addPlotLine internally.\n *\n * @private\n * @function Highcharts.Axis#addPlotBandOrLine\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n */\n function addPlotBandOrLine(options, coll) {\n const userOptions = this.userOptions;\n let obj = new PlotLineOrBandClass(this, options);\n if (this.visible) {\n obj = obj.render();\n }\n if (obj) { // #2189\n if (!this._addedPlotLB) {\n this._addedPlotLB = true;\n (userOptions.plotLines || [])\n .concat(userOptions.plotBands || [])\n .forEach((plotLineOptions) => {\n this.addPlotBandOrLine(plotLineOptions);\n });\n }\n // Add it to the user options for exporting and Axis.update\n if (coll) {\n // Workaround Microsoft/TypeScript issue #32693\n const updatedOptions = (userOptions[coll] || []);\n updatedOptions.push(options);\n userOptions[coll] = updatedOptions;\n }\n this.plotLinesAndBands.push(obj);\n }\n return obj;\n }\n /**\n * Add a plot line after render time.\n *\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#addPlotLine\n *\n * @param {Highcharts.AxisPlotLinesOptions} options\n * A configuration object for the plot line, as defined in\n * [xAxis.plotLines](https://api.highcharts.com/highcharts/xAxis.plotLines).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot line.\n */\n function addPlotLine(options) {\n return this.addPlotBandOrLine(options, 'plotLines');\n }\n /**\n * @private\n */\n function compose(PlotLineOrBandType, AxisClass) {\n if (!PlotLineOrBandClass) {\n PlotLineOrBandClass = PlotLineOrBandType;\n }\n if (U.pushUnique(composedMembers, AxisClass)) {\n extend(AxisClass.prototype, {\n addPlotBand,\n addPlotLine,\n addPlotBandOrLine,\n getPlotBandPath,\n removePlotBand,\n removePlotLine,\n removePlotBandOrLine\n });\n }\n return AxisClass;\n }\n PlotLineOrBandAxis.compose = compose;\n /**\n * Internal function to create the SVG path definition for a plot band.\n *\n * @function Highcharts.Axis#getPlotBandPath\n *\n * @param {number} from\n * The axis value to start from.\n *\n * @param {number} to\n * The axis value to end on.\n *\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n function getPlotBandPath(from, to, options = this.options) {\n const toPath = this.getPlotLinePath({\n value: to,\n force: true,\n acrossPanes: options.acrossPanes\n }), result = [], horiz = this.horiz, outside = !isNumber(this.min) ||\n !isNumber(this.max) ||\n (from < this.min && to < this.min) ||\n (from > this.max && to > this.max);\n let path = this.getPlotLinePath({\n value: from,\n force: true,\n acrossPanes: options.acrossPanes\n }), i, \n // #4964 check if chart is inverted or plotband is on yAxis\n plus = 1, isFlat;\n if (path && toPath) {\n // Flat paths don't need labels (#3836)\n if (outside) {\n isFlat = path.toString() === toPath.toString();\n plus = 0;\n }\n // Go over each subpath - for panes in Highcharts Stock\n for (i = 0; i < path.length; i += 2) {\n const pathStart = path[i], pathEnd = path[i + 1], toPathStart = toPath[i], toPathEnd = toPath[i + 1];\n // Type checking all affected path segments. Consider\n // something smarter.\n if ((pathStart[0] === 'M' || pathStart[0] === 'L') &&\n (pathEnd[0] === 'M' || pathEnd[0] === 'L') &&\n (toPathStart[0] === 'M' || toPathStart[0] === 'L') &&\n (toPathEnd[0] === 'M' || toPathEnd[0] === 'L')) {\n // Add 1 pixel when coordinates are the same\n if (horiz && toPathStart[1] === pathStart[1]) {\n toPathStart[1] += plus;\n toPathEnd[1] += plus;\n }\n else if (!horiz && toPathStart[2] === pathStart[2]) {\n toPathStart[2] += plus;\n toPathEnd[2] += plus;\n }\n result.push(['M', pathStart[1], pathStart[2]], ['L', pathEnd[1], pathEnd[2]], ['L', toPathEnd[1], toPathEnd[2]], ['L', toPathStart[1], toPathStart[2]], ['Z']);\n }\n result.isFlat = isFlat;\n }\n }\n else { // outside the axis area\n path = null;\n }\n return result;\n }\n /**\n * Remove a plot band by its id.\n *\n * @sample highcharts/members/axis-removeplotband/\n * Remove plot band by id\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#removePlotBand\n *\n * @param {string} id\n * The plot band's `id` as given in the original configuration\n * object or in the `addPlotBand` option.\n */\n function removePlotBand(id) {\n this.removePlotBandOrLine(id);\n }\n /**\n * Remove a plot band or plot line from the chart by id. Called\n * internally from `removePlotBand` and `removePlotLine`.\n * @private\n * @function Highcharts.Axis#removePlotBandOrLine\n */\n function removePlotBandOrLine(id) {\n const plotLinesAndBands = this.plotLinesAndBands, options = this.options, userOptions = this.userOptions;\n if (plotLinesAndBands) { // #15639\n let i = plotLinesAndBands.length;\n while (i--) {\n if (plotLinesAndBands[i].id === id) {\n plotLinesAndBands[i].destroy();\n }\n }\n ([\n options.plotLines || [],\n userOptions.plotLines || [],\n options.plotBands || [],\n userOptions.plotBands || []\n ]).forEach(function (arr) {\n i = arr.length;\n while (i--) {\n if ((arr[i] || {}).id === id) {\n erase(arr, arr[i]);\n }\n }\n });\n }\n }\n /**\n * Remove a plot line by its id.\n *\n * @sample highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#removePlotLine\n *\n * @param {string} id\n * The plot line's `id` as given in the original configuration\n * object or in the `addPlotLine` option.\n */\n function removePlotLine(id) {\n this.removePlotBandOrLine(id);\n }\n })(PlotLineOrBandAxis || (PlotLineOrBandAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return PlotLineOrBandAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBand.js', [_modules['Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js'], _modules['Core/Utilities.js']], function (PlotLineOrBandAxis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { arrayMax, arrayMin, defined, destroyObjectProperties, erase, fireEvent, merge, objectEach, pick } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * The object wrapper for plot lines and plot bands\n *\n * @class\n * @name Highcharts.PlotLineOrBand\n *\n * @param {Highcharts.Axis} axis\n * Related axis.\n *\n * @param {Highcharts.AxisPlotLinesOptions|Highcharts.AxisPlotBandsOptions} [options]\n * Options to use.\n */\n class PlotLineOrBand {\n /* *\n *\n * Static Functions\n *\n * */\n static compose(AxisClass) {\n return PlotLineOrBandAxis.compose(PlotLineOrBand, AxisClass);\n }\n /* *\n *\n * Constructor\n *\n * */\n constructor(axis, options) {\n this.axis = axis;\n if (options) {\n this.options = options;\n this.id = options.id;\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Render the plot line or plot band. If it is already existing,\n * move it.\n * @private\n * @function Highcharts.PlotLineOrBand#render\n */\n render() {\n fireEvent(this, 'render');\n const plotLine = this, axis = plotLine.axis, horiz = axis.horiz, log = axis.logarithmic, options = plotLine.options, color = options.color, zIndex = pick(options.zIndex, 0), events = options.events, groupAttribs = {}, renderer = axis.chart.renderer;\n let optionsLabel = options.label, label = plotLine.label, to = options.to, from = options.from, value = options.value, svgElem = plotLine.svgElem, path = [], group;\n const isBand = defined(from) && defined(to), isLine = defined(value), isNew = !svgElem, attribs = {\n 'class': 'highcharts-plot-' + (isBand ? 'band ' : 'line ') +\n (options.className || '')\n };\n let groupName = isBand ? 'bands' : 'lines';\n // logarithmic conversion\n if (log) {\n from = log.log2lin(from);\n to = log.log2lin(to);\n value = log.log2lin(value);\n }\n // Set the presentational attributes\n if (!axis.chart.styledMode) {\n if (isLine) {\n attribs.stroke = color || \"#999999\" /* Palette.neutralColor40 */;\n attribs['stroke-width'] = pick(options.width, 1);\n if (options.dashStyle) {\n attribs.dashstyle =\n options.dashStyle;\n }\n }\n else if (isBand) { // plot band\n attribs.fill = color || \"#e6e9ff\" /* Palette.highlightColor10 */;\n if (options.borderWidth) {\n attribs.stroke = options.borderColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n }\n }\n // Grouping and zIndex\n groupAttribs.zIndex = zIndex;\n groupName += '-' + zIndex;\n group = axis.plotLinesAndBandsGroups[groupName];\n if (!group) {\n axis.plotLinesAndBandsGroups[groupName] = group =\n renderer.g('plot-' + groupName)\n .attr(groupAttribs).add();\n }\n // Create the path\n if (isNew) {\n /**\n * SVG element of the plot line or band.\n *\n * @name Highcharts.PlotLineOrBand#svgElem\n * @type {Highcharts.SVGElement}\n */\n plotLine.svgElem = svgElem = renderer\n .path()\n .attr(attribs)\n .add(group);\n }\n // Set the path or return\n if (isLine) {\n path = axis.getPlotLinePath({\n value: value,\n lineWidth: svgElem.strokeWidth(),\n acrossPanes: options.acrossPanes\n });\n }\n else if (isBand) { // plot band\n path = axis.getPlotBandPath(from, to, options);\n }\n else {\n return;\n }\n // common for lines and bands\n // Add events only if they were not added before.\n if (!plotLine.eventsAdded && events) {\n objectEach(events, function (event, eventType) {\n svgElem.on(eventType, function (e) {\n events[eventType].apply(plotLine, [e]);\n });\n });\n plotLine.eventsAdded = true;\n }\n if ((isNew || !svgElem.d) && path && path.length) {\n svgElem.attr({ d: path });\n }\n else if (svgElem) {\n if (path) {\n svgElem.show();\n svgElem.animate({ d: path });\n }\n else if (svgElem.d) {\n svgElem.hide();\n if (label) {\n plotLine.label = label = label.destroy();\n }\n }\n }\n // the plot band/line label\n if (optionsLabel &&\n (defined(optionsLabel.text) || defined(optionsLabel.formatter)) &&\n path &&\n path.length &&\n axis.width > 0 &&\n axis.height > 0 &&\n !path.isFlat) {\n // apply defaults\n optionsLabel = merge({\n align: horiz && isBand && 'center',\n x: horiz ? !isBand && 4 : 10,\n verticalAlign: !horiz && isBand && 'middle',\n y: horiz ? isBand ? 16 : 10 : isBand ? 6 : -4,\n rotation: horiz && !isBand && 90\n }, optionsLabel);\n this.renderLabel(optionsLabel, path, isBand, zIndex);\n }\n else if (label) { // move out of sight\n label.hide();\n }\n // chainable\n return plotLine;\n }\n /**\n * Render and align label for plot line or band.\n * @private\n * @function Highcharts.PlotLineOrBand#renderLabel\n */\n renderLabel(optionsLabel, path, isBand, zIndex) {\n const plotLine = this, axis = plotLine.axis, renderer = axis.chart.renderer;\n let label = plotLine.label;\n // add the SVG element\n if (!label) {\n /**\n * SVG element of the label.\n *\n * @name Highcharts.PlotLineOrBand#label\n * @type {Highcharts.SVGElement}\n */\n plotLine.label = label = renderer\n .text(this.getLabelText(optionsLabel), 0, 0, optionsLabel.useHTML)\n .attr({\n align: optionsLabel.textAlign || optionsLabel.align,\n rotation: optionsLabel.rotation,\n 'class': 'highcharts-plot-' + (isBand ? 'band' : 'line') +\n '-label ' + (optionsLabel.className || ''),\n zIndex\n })\n .add();\n if (!axis.chart.styledMode) {\n label.css(merge({\n fontSize: '0.8em',\n textOverflow: 'ellipsis'\n }, optionsLabel.style));\n }\n }\n // get the bounding box and align the label\n // #3000 changed to better handle choice between plotband or plotline\n const xBounds = path.xBounds ||\n [path[0][1], path[1][1], (isBand ? path[2][1] : path[0][1])];\n const yBounds = path.yBounds ||\n [path[0][2], path[1][2], (isBand ? path[2][2] : path[0][2])];\n const x = arrayMin(xBounds);\n const y = arrayMin(yBounds);\n label.align(optionsLabel, false, {\n x,\n y,\n width: arrayMax(xBounds) - x,\n height: arrayMax(yBounds) - y\n });\n if (!label.alignValue || label.alignValue === 'left') {\n const width = optionsLabel.clip ?\n axis.width : axis.chart.chartWidth;\n label.css({\n width: (label.rotation === 90 ?\n axis.height - (label.alignAttr.y - axis.top) :\n width - (label.alignAttr.x - axis.left)) + 'px'\n });\n }\n label.show(true);\n }\n /**\n * Get label's text content.\n * @private\n * @function Highcharts.PlotLineOrBand#getLabelText\n */\n getLabelText(optionsLabel) {\n return defined(optionsLabel.formatter) ?\n optionsLabel.formatter\n .call(this) :\n optionsLabel.text;\n }\n /**\n * Remove the plot line or band.\n *\n * @function Highcharts.PlotLineOrBand#destroy\n */\n destroy() {\n // remove it from the lookup\n erase(this.axis.plotLinesAndBands, this);\n delete this.axis;\n destroyObjectProperties(this);\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Options for plot bands on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsOptions|Highcharts.YAxisPlotBandsOptions|Highcharts.ZAxisPlotBandsOptions} Highcharts.AxisPlotBandsOptions\n */\n /**\n * Options for plot band labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsLabelOptions|Highcharts.YAxisPlotBandsLabelOptions|Highcharts.ZAxisPlotBandsLabelOptions} Highcharts.AxisPlotBandsLabelOptions\n */\n /**\n * Options for plot lines on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesOptions|Highcharts.YAxisPlotLinesOptions|Highcharts.ZAxisPlotLinesOptions} Highcharts.AxisPlotLinesOptions\n */\n /**\n * Options for plot line labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesLabelOptions|Highcharts.YAxisPlotLinesLabelOptions|Highcharts.ZAxisPlotLinesLabelOptions} Highcharts.AxisPlotLinesLabelOptions\n */\n ('');\n /* *\n *\n * API Options\n *\n * */\n /**\n * An array of colored bands stretching across the plot area marking an\n * interval on the axis.\n *\n * In styled mode, the plot bands are styled by the `.highcharts-plot-band`\n * class in addition to the `className` option.\n *\n * @productdesc {highcharts}\n * In a gauge, a plot band on the Y axis (value axis) will stretch along the\n * perimeter of the gauge.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands\n */\n /**\n * Flag to decide if plotBand should be rendered across all panes.\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotBands.acrossPanes\n */\n /**\n * Border color for the plot band. Also requires `borderWidth` to be set.\n *\n * @type {Highcharts.ColorString}\n * @apioption xAxis.plotBands.borderColor\n */\n /**\n * Border width for the plot band. Also requires `borderColor` to be set.\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.plotBands.borderWidth\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-band`,\n * to apply to each individual band.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotBands.className\n */\n /**\n * The color of the plot band.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Color band\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #e6e9ff\n * @apioption xAxis.plotBands.color\n */\n /**\n * An object defining mouse events for the plot band. Supported properties\n * are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotBands.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotBands.events.mouseover\n */\n /**\n * The start position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.from\n */\n /**\n * An id used for identifying the plot band in Axis.removePlotBand.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n * @sample {highstock} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n *\n * @type {string}\n * @apioption xAxis.plotBands.id\n */\n /**\n * The end position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.to\n */\n /**\n * The z index of the plot band within the chart, relative to other\n * elements. Using the same z index as another element may give\n * unpredictable results, as the last rendered element will be on top.\n * Values from 0 to 20 make sense.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex-above-series/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotBands.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @since 2.1\n * @apioption xAxis.plotBands.label.align\n */\n /**\n * Rotation of the text label in degrees .\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @apioption xAxis.plotBands.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-band-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotBands.label.style\n */\n /**\n * The string text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotBands.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotBands.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotBands.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot band. Can be one of\n * \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-verticalalign/\n * Vertically centered label\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @since 2.1\n * @apioption xAxis.plotBands.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-y/\n * Label on x axis\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.y\n */\n /**\n * An array of lines stretching across the plot area, marking a specific\n * value on one of the axes.\n *\n * In styled mode, the plot lines are styled by the\n * `.highcharts-plot-line` class in addition to the `className` option.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Basic plot line\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge plot line\n * @apioption xAxis.plotLines\n */\n /**\n * Flag to decide if plotLine should be rendered across all panes.\n *\n * @sample {highstock} stock/xaxis/plotlines-acrosspanes/\n * Plot lines on different panes\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotLines.acrossPanes\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-line`,\n * to apply to each individual line.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotLines.className\n */\n /**\n * The color of the line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * A red line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.ColorString}\n * @default #999999\n * @apioption xAxis.plotLines.color\n */\n /**\n * The dashing or dot style for the plot line. For possible values see\n * [this overview](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-dashstyle/\n * Dash and dot pattern\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 1.2\n * @apioption xAxis.plotLines.dashStyle\n */\n /**\n * An object defining mouse events for the plot line. Supported\n * properties are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotLines.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction}\n * @apioption xAxis.plotLines.events.mouseover\n */\n /**\n * An id used for identifying the plot line in Axis.removePlotLine.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n *\n * @type {string}\n * @apioption xAxis.plotLines.id\n */\n /**\n * The position of the line in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Between two categories on X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotLines.value\n */\n /**\n * The width or thickness of the plot line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * 2px wide line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @default 2\n * @apioption xAxis.plotLines.width\n */\n /**\n * The z index of the plot line within the chart.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-behind/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above-all/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotLines.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @apioption xAxis.plotLines.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.AlignValue}\n * @default left\n * @since 2.1\n * @apioption xAxis.plotLines.label.align\n */\n /**\n * Whether to hide labels that are outside the plot area.\n *\n * @type {boolean}\n * @default false\n * @since 10.3.3\n * @apioption xAxis.plotLines.labels.clip\n */\n /**\n * Callback JavaScript function to format the label. Useful properties like\n * the value of plot line or the range of plot band (`from` & `to`\n * properties) can be found in `this.options` object.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-plotbands-label-formatter\n * Label formatters for plot line and plot band.\n * @type {Highcharts.FormatterCallbackFunction}\n * @apioption xAxis.plotLines.label.formatter\n */\n /**\n * Rotation of the text label in degrees. Defaults to 0 for horizontal plot\n * lines and 90 for vertical lines.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Slanted text\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-line-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotLines.label.style\n */\n /**\n * The text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotLines.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-textalign/\n * Text label in bottom position\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotLines.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotLines.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot line. Can be\n * one of \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Vertically centered label\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default {highcharts} top\n * @default {highstock} top\n * @since 2.1\n * @apioption xAxis.plotLines.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-y/\n * Label below the plot line\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.y\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotBands\n * @apioption yAxis.plotBands\n */\n /**\n * In a gauge chart, this option determines the inner radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n * By default, the inner radius is controlled by the [thickness](\n * #yAxis.plotBands.thickness) option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.innerRadius\n */\n /**\n * In a gauge chart, this option determines the outer radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 100%\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.outerRadius\n */\n /**\n * In a gauge chart, this option sets the width of the plot band\n * stretching along the perimeter. It can be given as a percentage\n * string, like `\"10%\"`, or as a pixel number, like `10`. The default\n * value 10 is the same as the default [tickLength](#yAxis.tickLength),\n * thus making the plot band act as a background for the tick markers.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 10\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.thickness\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotLines\n * @apioption yAxis.plotLines\n */\n (''); // keeps doclets above in JS file\n\n return PlotLineOrBand;\n });\n _registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (F, H, R, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { format } = F;\n const { doc, isSafari } = H;\n const { distribute } = R;\n const { addEvent, clamp, css, discardElement, extend, fireEvent, isArray, isNumber, isString, merge, pick, splat, syncTimeout } = U;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Tooltip of a chart.\n *\n * @class\n * @name Highcharts.Tooltip\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n class Tooltip {\n /* *\n *\n * Constructors\n *\n * */\n constructor(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allowShared = true;\n this.container = void 0;\n this.crosshairs = [];\n this.distance = 0;\n this.isHidden = true;\n this.isSticky = false;\n this.now = {};\n this.options = {};\n this.outside = false;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Build the body (lines) of the tooltip by iterating over the items and\n * returning one entry for each item, abstracting this functionality allows\n * to easily overwrite and extend it.\n *\n * @private\n * @function Highcharts.Tooltip#bodyFormatter\n */\n bodyFormatter(items) {\n return items.map(function (item) {\n const tooltipOptions = item.series.tooltipOptions;\n return (tooltipOptions[(item.point.formatPrefix || 'point') + 'Formatter'] ||\n item.point.tooltipFormatter).call(item.point, tooltipOptions[(item.point.formatPrefix || 'point') + 'Format'] || '');\n });\n }\n /**\n * Destroy the single tooltips in a split tooltip.\n * If the tooltip is active then it is not destroyed, unless forced to.\n *\n * @private\n * @function Highcharts.Tooltip#cleanSplit\n *\n * @param {boolean} [force]\n * Force destroy all tooltips.\n */\n cleanSplit(force) {\n this.chart.series.forEach(function (series) {\n const tt = series && series.tt;\n if (tt) {\n if (!tt.isActive || force) {\n series.tt = tt.destroy();\n }\n else {\n tt.isActive = false;\n }\n }\n });\n }\n /**\n * In case no user defined formatter is given, this will be used. Note that\n * the context here is an object holding point, series, x, y etc.\n *\n * @function Highcharts.Tooltip#defaultFormatter\n *\n * @param {Highcharts.Tooltip} tooltip\n *\n * @return {string|Array}\n * Returns a string (single tooltip and shared)\n * or an array of strings (split tooltip)\n */\n defaultFormatter(tooltip) {\n const items = this.points || splat(this);\n let s;\n // Build the header\n s = [tooltip.tooltipFooterHeaderFormatter(items[0])];\n // build the values\n s = s.concat(tooltip.bodyFormatter(items));\n // footer\n s.push(tooltip.tooltipFooterHeaderFormatter(items[0], true));\n return s;\n }\n /**\n * Removes and destroys the tooltip and its elements.\n *\n * @function Highcharts.Tooltip#destroy\n */\n destroy() {\n // Destroy and clear local variables\n if (this.label) {\n this.label = this.label.destroy();\n }\n if (this.split) {\n this.cleanSplit(true);\n if (this.tt) {\n this.tt = this.tt.destroy();\n }\n }\n if (this.renderer) {\n this.renderer = this.renderer.destroy();\n discardElement(this.container);\n }\n U.clearTimeout(this.hideTimer);\n U.clearTimeout(this.tooltipTimeout);\n }\n /**\n * Extendable method to get the anchor position of the tooltip\n * from a point or set of points\n *\n * @private\n * @function Highcharts.Tooltip#getAnchor\n */\n getAnchor(points, mouseEvent) {\n const chart = this.chart, pointer = chart.pointer, inverted = chart.inverted, plotTop = chart.plotTop, plotLeft = chart.plotLeft;\n let ret;\n points = splat(points);\n // If reversedStacks are false the tooltip position should be taken from\n // the last point (#17948)\n if (points[0].series &&\n points[0].series.yAxis &&\n !points[0].series.yAxis.options.reversedStacks) {\n points = points.slice().reverse();\n }\n // When tooltip follows mouse, relate the position to the mouse\n if (this.followPointer && mouseEvent) {\n if (typeof mouseEvent.chartX === 'undefined') {\n mouseEvent = pointer.normalize(mouseEvent);\n }\n ret = [\n mouseEvent.chartX - plotLeft,\n mouseEvent.chartY - plotTop\n ];\n // Some series types use a specificly calculated tooltip position for\n // each point\n }\n else if (points[0].tooltipPos) {\n ret = points[0].tooltipPos;\n // Calculate the average position and adjust for axis positions\n }\n else {\n let chartX = 0, chartY = 0;\n points.forEach(function (point) {\n const pos = point.pos(true);\n if (pos) {\n chartX += pos[0];\n chartY += pos[1];\n }\n });\n chartX /= points.length;\n chartY /= points.length;\n // When shared, place the tooltip next to the mouse (#424)\n if (this.shared && points.length > 1 && mouseEvent) {\n if (inverted) {\n chartX = mouseEvent.chartX;\n }\n else {\n chartY = mouseEvent.chartY;\n }\n }\n // Use the average position for multiple points\n ret = [chartX - plotLeft, chartY - plotTop];\n }\n return ret.map(Math.round);\n }\n /**\n * Get the CSS class names for the tooltip's label. Styles the label\n * by `colorIndex` or user-defined CSS.\n *\n * @function Highcharts.Tooltip#getClassName\n *\n * @return {string}\n * The class names.\n */\n getClassName(point, isSplit, isHeader) {\n const options = this.options, series = point.series, seriesOptions = series.options;\n return [\n options.className,\n 'highcharts-label',\n isHeader && 'highcharts-tooltip-header',\n isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',\n !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),\n (seriesOptions && seriesOptions.className)\n ].filter(isString).join(' ');\n }\n /**\n * Creates the Tooltip label element if it does not exist, then returns it.\n *\n * @function Highcharts.Tooltip#getLabel\n *\n * @return {Highcharts.SVGElement}\n * Tooltip label\n */\n getLabel() {\n const tooltip = this, styledMode = this.chart.styledMode, options = this.options, doSplit = this.split && this.allowShared, pointerEvents = (options.style.pointerEvents ||\n (this.shouldStickOnContact() ? 'auto' : 'none'));\n let container, renderer = this.chart.renderer;\n // If changing from a split tooltip to a non-split tooltip, we must\n // destroy it in order to get the SVG right. #13868.\n if (this.label) {\n const wasSplit = !this.label.hasClass('highcharts-label');\n if ((!doSplit && wasSplit) || (doSplit && !wasSplit)) {\n this.destroy();\n }\n }\n if (!this.label) {\n if (this.outside) {\n const chartStyle = this.chart.options.chart.style, Renderer = RendererRegistry.getRendererType();\n /**\n * Reference to the tooltip's container, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#container\n * @type {Highcharts.HTMLDOMElement|undefined}\n */\n this.container = container = H.doc.createElement('div');\n container.className = 'highcharts-tooltip-container';\n css(container, {\n position: 'absolute',\n top: '1px',\n pointerEvents,\n zIndex: Math.max(this.options.style.zIndex || 0, (chartStyle && chartStyle.zIndex || 0) + 3)\n });\n H.doc.body.appendChild(container);\n /**\n * Reference to the tooltip's renderer, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#renderer\n * @type {Highcharts.SVGRenderer|undefined}\n */\n this.renderer = renderer = new Renderer(container, 0, 0, chartStyle, void 0, void 0, renderer.styledMode);\n }\n // Create the label\n if (doSplit) {\n this.label = renderer.g('tooltip');\n }\n else {\n this.label = renderer\n .label('', 0, 0, options.shape, void 0, void 0, options.useHTML, void 0, 'tooltip')\n .attr({\n padding: options.padding,\n r: options.borderRadius\n });\n if (!styledMode) {\n this.label\n .attr({\n fill: options.backgroundColor,\n 'stroke-width': options.borderWidth || 0\n })\n // #2301, #2657\n .css(options.style)\n .css({ pointerEvents });\n }\n }\n // Split tooltip use updateTooltipContainer to position the tooltip\n // container.\n if (tooltip.outside) {\n const label = this.label;\n const { xSetter, ySetter } = label;\n label.xSetter = function (value) {\n xSetter.call(label, tooltip.distance);\n container.style.left = value + 'px';\n };\n label.ySetter = function (value) {\n ySetter.call(label, tooltip.distance);\n container.style.top = value + 'px';\n };\n }\n this.label\n .attr({ zIndex: 8 })\n .shadow(options.shadow)\n .add();\n }\n return this.label;\n }\n /**\n * Get the total area available area to place the tooltip\n *\n * @private\n */\n getPlayingField() {\n const { body, documentElement } = doc, { chart, distance, outside } = this;\n return {\n width: outside ?\n // Substract distance to prevent scrollbars\n Math.max(body.scrollWidth, documentElement.scrollWidth, body.offsetWidth, documentElement.offsetWidth, documentElement.clientWidth) - 2 * distance :\n chart.chartWidth,\n height: outside ?\n Math.max(body.scrollHeight, documentElement.scrollHeight, body.offsetHeight, documentElement.offsetHeight, documentElement.clientHeight) :\n chart.chartHeight\n };\n }\n /**\n * Place the tooltip in a chart without spilling over and not covering the\n * point itself.\n *\n * @function Highcharts.Tooltip#getPosition\n *\n * @param {number} boxWidth\n * Width of the tooltip box.\n *\n * @param {number} boxHeight\n * Height of the tooltip box.\n *\n * @param {Highcharts.Point} point\n * Tooltip related point.\n *\n * @return {Highcharts.PositionObject}\n * Recommended position of the tooltip.\n */\n getPosition(boxWidth, boxHeight, point) {\n const chart = this.chart, distance = this.distance, ret = {}, \n // Don't use h if chart isn't inverted (#7242) ???\n h = (chart.inverted && point.h) || 0, // #4117 ???\n outside = this.outside, playingField = this.getPlayingField(), outerWidth = playingField.width, outerHeight = playingField.height, chartPosition = chart.pointer.getChartPosition(), scaleX = (val) => ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleX), scaleY = (val) => ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleY), \n // Build parameter arrays for firstDimension()/secondDimension()\n buildDimensionArray = (dim) => {\n const isX = dim === 'x';\n return [\n dim,\n isX ? outerWidth : outerHeight,\n isX ? boxWidth : boxHeight\n ].concat(outside ? [\n // If we are using tooltip.outside, we need to scale the\n // position to match scaling of the container in case there\n // is a transform/zoom on the container. #11329\n isX ? scaleX(boxWidth) : scaleY(boxHeight),\n isX ? chartPosition.left - distance +\n scaleX(point.plotX + chart.plotLeft) :\n chartPosition.top - distance +\n scaleY(point.plotY + chart.plotTop),\n 0,\n isX ? outerWidth : outerHeight\n ] : [\n // Not outside, no scaling is needed\n isX ? boxWidth : boxHeight,\n isX ? point.plotX + chart.plotLeft :\n point.plotY + chart.plotTop,\n isX ? chart.plotLeft : chart.plotTop,\n isX ? chart.plotLeft + chart.plotWidth :\n chart.plotTop + chart.plotHeight\n ]);\n };\n let first = buildDimensionArray('y'), second = buildDimensionArray('x'), swapped;\n // Handle negative points or reversed axis (#13780)\n let flipped = !!point.negative;\n if (!chart.polar &&\n chart.hoverSeries &&\n chart.hoverSeries.yAxis &&\n chart.hoverSeries.yAxis.reversed) {\n flipped = !flipped;\n }\n // The far side is right or bottom\n const preferFarSide = !this.followPointer &&\n pick(point.ttBelow, !chart.inverted === flipped), // #4984\n /*\n * Handle the preferred dimension. When the preferred dimension is\n * tooltip on top or bottom of the point, it will look for space\n * there.\n *\n * @private\n */\n firstDimension = function (dim, outerSize, innerSize, scaledInnerSize, // #11329\n point, min, max) {\n const scaledDist = outside ?\n (dim === 'y' ? scaleY(distance) : scaleX(distance)) :\n distance, scaleDiff = (innerSize - scaledInnerSize) / 2, roomLeft = scaledInnerSize < point - distance, roomRight = point + distance + scaledInnerSize < outerSize, alignedLeft = point - scaledDist - innerSize + scaleDiff, alignedRight = point + scaledDist - scaleDiff;\n if (preferFarSide && roomRight) {\n ret[dim] = alignedRight;\n }\n else if (!preferFarSide && roomLeft) {\n ret[dim] = alignedLeft;\n }\n else if (roomLeft) {\n ret[dim] = Math.min(max - scaledInnerSize, alignedLeft - h < 0 ? alignedLeft : alignedLeft - h);\n }\n else if (roomRight) {\n ret[dim] = Math.max(min, alignedRight + h + innerSize > outerSize ?\n alignedRight :\n alignedRight + h);\n }\n else {\n return false;\n }\n }, \n /*\n * Handle the secondary dimension. If the preferred dimension is\n * tooltip on top or bottom of the point, the second dimension is to\n * align the tooltip above the point, trying to align center but\n * allowing left or right align within the chart box.\n *\n * @private\n */\n secondDimension = function (dim, outerSize, innerSize, scaledInnerSize, // #11329\n point) {\n let retVal;\n // Too close to the edge, return false and swap dimensions\n if (point < distance || point > outerSize - distance) {\n retVal = false;\n // Align left/top\n }\n else if (point < innerSize / 2) {\n ret[dim] = 1;\n // Align right/bottom\n }\n else if (point > outerSize - scaledInnerSize / 2) {\n ret[dim] = outerSize - scaledInnerSize - 2;\n // Align center\n }\n else {\n ret[dim] = point - innerSize / 2;\n }\n return retVal;\n }, \n /*\n * Swap the dimensions\n */\n swap = function (count) {\n const temp = first;\n first = second;\n second = temp;\n swapped = count;\n }, run = function () {\n if (firstDimension.apply(0, first) !== false) {\n if (secondDimension.apply(0, second) === false &&\n !swapped) {\n swap(true);\n run();\n }\n }\n else if (!swapped) {\n swap(true);\n run();\n }\n else {\n ret.x = ret.y = 0;\n }\n };\n // Under these conditions, prefer the tooltip on the side of the point\n if (chart.inverted || this.len > 1) {\n swap();\n }\n run();\n return ret;\n }\n /**\n * Hides the tooltip with a fade out animation.\n *\n * @function Highcharts.Tooltip#hide\n *\n * @param {number} [delay]\n * The fade out in milliseconds. If no value is provided the value\n * of the tooltip.hideDelay option is used. A value of 0 disables\n * the fade out animation.\n */\n hide(delay) {\n const tooltip = this;\n // disallow duplicate timers (#1728, #1766)\n U.clearTimeout(this.hideTimer);\n delay = pick(delay, this.options.hideDelay);\n if (!this.isHidden) {\n this.hideTimer = syncTimeout(function () {\n // If there is a delay, do fadeOut with the default duration. If\n // the hideDelay is 0, we assume no animation is wanted, so we\n // pass 0 duration. #12994.\n tooltip.getLabel().fadeOut(delay ? void 0 : delay);\n tooltip.isHidden = true;\n }, delay);\n }\n }\n /**\n * Initialize tooltip.\n *\n * @private\n * @function Highcharts.Tooltip#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n init(chart, options) {\n /**\n * Chart of the tooltip.\n *\n * @readonly\n * @name Highcharts.Tooltip#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n /**\n * Used tooltip options.\n *\n * @readonly\n * @name Highcharts.Tooltip#options\n * @type {Highcharts.TooltipOptions}\n */\n this.options = options;\n /**\n * List of crosshairs.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#crosshairs\n * @type {Array}\n */\n this.crosshairs = [];\n /**\n * Current values of x and y when animating.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#now\n * @type {Highcharts.PositionObject}\n */\n this.now = { x: 0, y: 0 };\n /**\n * Tooltips are initially hidden.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#isHidden\n * @type {boolean}\n */\n this.isHidden = true;\n /**\n * True, if the tooltip is split into one label per series, with the\n * header close to the axis.\n *\n * @readonly\n * @name Highcharts.Tooltip#split\n * @type {boolean|undefined}\n */\n this.split = options.split && !chart.inverted && !chart.polar;\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events.\n *\n * @readonly\n * @name Highcharts.Tooltip#shared\n * @type {boolean|undefined}\n */\n this.shared = options.shared || this.split;\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (false), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area.\n *\n * @readonly\n * @name Highcharts.Tooltip#outside\n * @type {boolean}\n *\n * @todo\n * Split tooltip does not support outside in the first iteration. Should\n * not be too complicated to implement.\n */\n this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));\n }\n shouldStickOnContact(pointerEvent) {\n return !!(!this.followPointer &&\n this.options.stickOnContact &&\n (!pointerEvent || this.chart.pointer.inClass(pointerEvent.target, 'highcharts-tooltip')));\n }\n /**\n * Moves the tooltip with a soft animation to a new position.\n *\n * @private\n * @function Highcharts.Tooltip#move\n *\n * @param {number} x\n *\n * @param {number} y\n *\n * @param {number} anchorX\n *\n * @param {number} anchorY\n */\n move(x, y, anchorX, anchorY) {\n const tooltip = this, now = tooltip.now, animate = tooltip.options.animation !== false &&\n !tooltip.isHidden &&\n // When we get close to the target position, abort animation and\n // land on the right place (#3056)\n (Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1), skipAnchor = tooltip.followPointer || tooltip.len > 1;\n // Get intermediate values for animation\n extend(now, {\n x: animate ? (2 * now.x + x) / 3 : x,\n y: animate ? (now.y + y) / 2 : y,\n anchorX: skipAnchor ?\n void 0 :\n animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,\n anchorY: skipAnchor ?\n void 0 :\n animate ? (now.anchorY + anchorY) / 2 : anchorY\n });\n // Move to the intermediate value\n tooltip.getLabel().attr(now);\n tooltip.drawTracker();\n // Run on next tick of the mouse tracker\n if (animate) {\n // Never allow two timeouts\n U.clearTimeout(this.tooltipTimeout);\n // Set the fixed interval ticking for the smooth tooltip\n this.tooltipTimeout = setTimeout(function () {\n // The interval function may still be running during destroy,\n // so check that the chart is really there before calling.\n if (tooltip) {\n tooltip.move(x, y, anchorX, anchorY);\n }\n }, 32);\n }\n }\n /**\n * Refresh the tooltip's text and position.\n *\n * @function Highcharts.Tooltip#refresh\n *\n * @param {Highcharts.Point|Array} pointOrPoints\n * Either a point or an array of points.\n *\n * @param {Highcharts.PointerEventObject} [mouseEvent]\n * Mouse event, that is responsible for the refresh and should be\n * used for the tooltip update.\n */\n refresh(pointOrPoints, mouseEvent) {\n const tooltip = this, chart = this.chart, options = tooltip.options, pointer = chart.pointer, points = splat(pointOrPoints), point = points[0], pointConfig = [], formatter = options.formatter || tooltip.defaultFormatter, shared = tooltip.shared, styledMode = chart.styledMode;\n let textConfig = {};\n if (!options.enabled || !point.series) { // #16820\n return;\n }\n U.clearTimeout(this.hideTimer);\n // A switch saying if this specific tooltip configuration allows shared\n // or split modes\n tooltip.allowShared = !(!isArray(pointOrPoints) &&\n pointOrPoints.series &&\n pointOrPoints.series.noSharedTooltip);\n // get the reference point coordinates (pie charts use tooltipPos)\n tooltip.followPointer = (!tooltip.split && point.series.tooltipOptions.followPointer);\n const anchor = tooltip.getAnchor(pointOrPoints, mouseEvent), x = anchor[0], y = anchor[1];\n // shared tooltip, array is sent over\n if (shared && tooltip.allowShared) {\n pointer.applyInactiveState(points);\n // Now set hover state for the choosen ones:\n points.forEach(function (item) {\n item.setState('hover');\n pointConfig.push(item.getLabelConfig());\n });\n textConfig = {\n x: point.category,\n y: point.y\n };\n textConfig.points = pointConfig;\n // single point tooltip\n }\n else {\n textConfig = point.getLabelConfig();\n }\n this.len = pointConfig.length; // #6128\n const text = formatter.call(textConfig, tooltip);\n // register the current series\n const currentSeries = point.series;\n this.distance = pick(currentSeries.tooltipOptions.distance, 16);\n // update the inner HTML\n if (text === false) {\n this.hide();\n }\n else {\n // update text\n if (tooltip.split && tooltip.allowShared) { // #13868\n this.renderSplit(text, points);\n }\n else {\n let checkX = x;\n let checkY = y;\n if (mouseEvent && pointer.isDirectTouch) {\n checkX = mouseEvent.chartX - chart.plotLeft;\n checkY = mouseEvent.chartY - chart.plotTop;\n }\n // #11493, #13095\n if (chart.polar ||\n currentSeries.options.clip === false ||\n points.some((p) => // #16004\n pointer.isDirectTouch || // ##17929\n p.series.shouldShowTooltip(checkX, checkY))) {\n const label = tooltip.getLabel();\n // Prevent the tooltip from flowing over the chart box\n // (#6659)\n if (!options.style.width || styledMode) {\n label.css({\n width: (this.outside ?\n this.getPlayingField() :\n chart.spacingBox).width + 'px'\n });\n }\n label.attr({\n text: text && text.join ?\n text.join('') :\n text\n });\n // Set the stroke color of the box to reflect the point\n label.addClass(tooltip.getClassName(point), true);\n if (!styledMode) {\n label.attr({\n stroke: (options.borderColor ||\n point.color ||\n currentSeries.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n tooltip.updatePosition({\n plotX: x,\n plotY: y,\n negative: point.negative,\n ttBelow: point.ttBelow,\n h: anchor[2] || 0\n });\n }\n else {\n tooltip.hide();\n return;\n }\n }\n // show it\n if (tooltip.isHidden && tooltip.label) {\n tooltip.label.attr({\n opacity: 1\n }).show();\n }\n tooltip.isHidden = false;\n }\n fireEvent(this, 'refresh');\n }\n /**\n * Render the split tooltip. Loops over each point's text and adds\n * a label next to the point, then uses the distribute function to\n * find best non-overlapping positions.\n *\n * @private\n * @function Highcharts.Tooltip#renderSplit\n *\n * @param {string|Array<(boolean|string)>} labels\n *\n * @param {Array} points\n */\n renderSplit(labels, points) {\n const tooltip = this;\n const { chart, chart: { chartWidth, chartHeight, plotHeight, plotLeft, plotTop, pointer, scrollablePixelsY = 0, scrollablePixelsX, scrollingContainer: { scrollLeft, scrollTop } = { scrollLeft: 0, scrollTop: 0 }, styledMode }, distance, options, options: { positioner } } = tooltip;\n // The area which the tooltip should be limited to. Limit to scrollable\n // plot area if enabled, otherwise limit to the chart container. If\n // outside is true it should be the whole viewport\n const bounds = (tooltip.outside &&\n typeof scrollablePixelsX !== 'number') ?\n doc.documentElement.getBoundingClientRect() : {\n left: scrollLeft,\n right: scrollLeft + chartWidth,\n top: scrollTop,\n bottom: scrollTop + chartHeight\n };\n const tooltipLabel = tooltip.getLabel();\n const ren = this.renderer || chart.renderer;\n const headerTop = Boolean(chart.xAxis[0] && chart.xAxis[0].opposite);\n const { left: chartLeft, top: chartTop } = pointer.getChartPosition();\n let distributionBoxTop = plotTop + scrollTop;\n let headerHeight = 0;\n let adjustedPlotHeight = plotHeight - scrollablePixelsY;\n /**\n * Calculates the anchor position for the partial tooltip\n *\n * @private\n * @param {Highcharts.Point} point The point related to the tooltip\n * @return {Object} Returns an object with anchorX and anchorY\n */\n function getAnchor(point) {\n const { isHeader, plotX = 0, plotY = 0, series } = point;\n let anchorX;\n let anchorY;\n if (isHeader) {\n // Set anchorX to plotX\n anchorX = plotLeft + plotX;\n // Set anchorY to center of visible plot area.\n anchorY = plotTop + plotHeight / 2;\n }\n else {\n const { xAxis, yAxis } = series;\n // Set anchorX to plotX. Limit to within xAxis.\n anchorX = xAxis.pos + clamp(plotX, -distance, xAxis.len + distance);\n // Set anchorY, limit to the scrollable plot area\n if (series.shouldShowTooltip(0, yAxis.pos - plotTop + plotY, {\n ignoreX: true\n })) {\n anchorY = yAxis.pos + plotY;\n }\n }\n // Limit values to plot area\n anchorX = clamp(anchorX, bounds.left - distance, bounds.right + distance);\n return { anchorX, anchorY };\n }\n /**\n * Calculates the position of the partial tooltip\n *\n * @private\n * @param {number} anchorX\n * The partial tooltip anchor x position\n *\n * @param {number} anchorY\n * The partial tooltip anchor y position\n *\n * @param {boolean|undefined} isHeader\n * Whether the partial tooltip is a header\n *\n * @param {number} boxWidth\n * Width of the partial tooltip\n *\n * @return {Highcharts.PositionObject}\n * Returns the partial tooltip x and y position\n */\n function defaultPositioner(anchorX, anchorY, isHeader, boxWidth, alignedLeft = true) {\n let y;\n let x;\n if (isHeader) {\n y = headerTop ? 0 : adjustedPlotHeight;\n x = clamp(anchorX - (boxWidth / 2), bounds.left, bounds.right - boxWidth - (tooltip.outside ? chartLeft : 0));\n }\n else {\n y = anchorY - distributionBoxTop;\n x = alignedLeft ?\n anchorX - boxWidth - distance :\n anchorX + distance;\n x = clamp(x, alignedLeft ? x : bounds.left, bounds.right);\n }\n // NOTE: y is relative to distributionBoxTop\n return { x, y };\n }\n /**\n * Updates the attributes and styling of the partial tooltip. Creates a\n * new partial tooltip if it does not exists.\n *\n * @private\n * @param {Highcharts.SVGElement|undefined} partialTooltip\n * The partial tooltip to update\n * @param {Highcharts.Point} point\n * The point related to the partial tooltip\n * @param {boolean|string} str The text for the partial tooltip\n * @return {Highcharts.SVGElement} Returns the updated partial tooltip\n */\n function updatePartialTooltip(partialTooltip, point, str) {\n var _a;\n let tt = partialTooltip;\n const { isHeader, series } = point;\n if (!tt) {\n const attribs = {\n padding: options.padding,\n r: options.borderRadius\n };\n if (!styledMode) {\n attribs.fill = options.backgroundColor;\n attribs['stroke-width'] = (_a = options.borderWidth) !== null && _a !== void 0 ? _a : 1;\n }\n tt = ren\n .label('', 0, 0, (options[isHeader ? 'headerShape' : 'shape']), void 0, void 0, options.useHTML)\n .addClass(tooltip.getClassName(point, true, isHeader))\n .attr(attribs)\n .add(tooltipLabel);\n }\n tt.isActive = true;\n tt.attr({\n text: str\n });\n if (!styledMode) {\n tt.css(options.style)\n .attr({\n stroke: (options.borderColor ||\n point.color ||\n series.color ||\n \"#333333\" /* Palette.neutralColor80 */)\n });\n }\n return tt;\n }\n // Graceful degradation for legacy formatters\n if (isString(labels)) {\n labels = [false, labels];\n }\n // Create the individual labels for header and points, ignore footer\n let boxes = labels.slice(0, points.length + 1).reduce(function (boxes, str, i) {\n if (str !== false && str !== '') {\n const point = (points[i - 1] ||\n {\n // Item 0 is the header. Instead of this, we could also\n // use the crosshair label\n isHeader: true,\n plotX: points[0].plotX,\n plotY: plotHeight,\n series: {}\n });\n const isHeader = point.isHeader;\n // Store the tooltip label referance on the series\n const owner = isHeader ? tooltip : point.series;\n const tt = owner.tt = updatePartialTooltip(owner.tt, point, str.toString());\n // Get X position now, so we can move all to the other side in\n // case of overflow\n const bBox = tt.getBBox();\n const boxWidth = bBox.width + tt.strokeWidth();\n if (isHeader) {\n headerHeight = bBox.height;\n adjustedPlotHeight += headerHeight;\n if (headerTop) {\n distributionBoxTop -= headerHeight;\n }\n }\n const { anchorX, anchorY } = getAnchor(point);\n if (typeof anchorY === 'number') {\n const size = bBox.height + 1;\n const boxPosition = (positioner ?\n positioner.call(tooltip, boxWidth, size, point) :\n defaultPositioner(anchorX, anchorY, isHeader, boxWidth));\n boxes.push({\n // 0-align to the top, 1-align to the bottom\n align: positioner ? 0 : void 0,\n anchorX,\n anchorY,\n boxWidth,\n point,\n rank: pick(boxPosition.rank, isHeader ? 1 : 0),\n size,\n target: boxPosition.y,\n tt,\n x: boxPosition.x\n });\n }\n else {\n // Hide tooltips which anchorY is outside the visible plot\n // area\n tt.isActive = false;\n }\n }\n return boxes;\n }, []);\n // Realign the tooltips towards the right if there is not enough space\n // to the left and there is space to to the right\n if (!positioner && boxes.some((box) => {\n // Always realign if the beginning of a label is outside bounds\n const { outside } = tooltip;\n const boxStart = (outside ? chartLeft : 0) + box.anchorX;\n if (boxStart < bounds.left &&\n boxStart + box.boxWidth < bounds.right) {\n return true;\n }\n // Otherwise, check if there is more space available to the right\n return boxStart < (chartLeft - bounds.left) + box.boxWidth &&\n bounds.right - boxStart > boxStart;\n })) {\n boxes = boxes.map((box) => {\n const { x, y } = defaultPositioner(box.anchorX, box.anchorY, box.point.isHeader, box.boxWidth, false);\n return extend(box, {\n target: y,\n x\n });\n });\n }\n // Clean previous run (for missing points)\n tooltip.cleanSplit();\n // Distribute and put in place\n distribute(boxes, adjustedPlotHeight);\n const boxExtremes = {\n left: chartLeft,\n right: chartLeft\n };\n // Get the extremes from series tooltips\n boxes.forEach(function (box) {\n const { x, boxWidth, isHeader } = box;\n if (!isHeader) {\n if (tooltip.outside && chartLeft + x < boxExtremes.left) {\n boxExtremes.left = chartLeft + x;\n }\n if (!isHeader &&\n tooltip.outside &&\n boxExtremes.left + boxWidth > boxExtremes.right) {\n boxExtremes.right = chartLeft + x;\n }\n }\n });\n boxes.forEach(function (box) {\n const { x, anchorX, anchorY, pos, point: { isHeader } } = box;\n const attributes = {\n visibility: typeof pos === 'undefined' ? 'hidden' : 'inherit',\n x,\n /* NOTE: y should equal pos to be consistent with !split\n * tooltip, but is currently relative to plotTop. Is left as is\n * to avoid breaking change. Remove distributionBoxTop to make\n * it consistent.\n */\n y: (pos || 0) + distributionBoxTop,\n anchorX,\n anchorY\n };\n // Handle left-aligned tooltips overflowing the chart area\n if (tooltip.outside && x < anchorX) {\n const offset = chartLeft - boxExtremes.left;\n // Skip this if there is no overflow\n if (offset > 0) {\n if (!isHeader) {\n attributes.x = x + offset;\n attributes.anchorX = anchorX + offset;\n }\n if (isHeader) {\n attributes.x = (boxExtremes.right - boxExtremes.left) / 2;\n attributes.anchorX = anchorX + offset;\n }\n }\n }\n // Put the label in place\n box.tt.attr(attributes);\n });\n /* If we have a seperate tooltip container, then update the necessary\n * container properties.\n * Test that tooltip has its own container and renderer before executing\n * the operation.\n */\n const { container, outside, renderer } = tooltip;\n if (outside && container && renderer) {\n // Set container size to fit the bounds\n const { width, height, x, y } = tooltipLabel.getBBox();\n renderer.setSize(width + x, height + y, false);\n // Position the tooltip container to the chart container\n container.style.left = boxExtremes.left + 'px';\n container.style.top = chartTop + 'px';\n }\n // Workaround for #18927, artefacts left by the shadows of split\n // tooltips in Safari v16 (2023). Check again with later versions if we\n // can remove this.\n if (isSafari) {\n tooltipLabel.attr({\n // Force a redraw of the whole group by chaning the opacity\n // slightly\n opacity: tooltipLabel.opacity === 1 ? 0.999 : 1\n });\n }\n }\n /**\n * If the `stickOnContact` option is active, this will add a tracker shape.\n *\n * @private\n * @function Highcharts.Tooltip#drawTracker\n */\n drawTracker() {\n const tooltip = this;\n if (!this.shouldStickOnContact()) {\n if (tooltip.tracker) {\n tooltip.tracker = tooltip.tracker.destroy();\n }\n return;\n }\n const chart = tooltip.chart;\n const label = tooltip.label;\n const points = tooltip.shared ? chart.hoverPoints : chart.hoverPoint;\n if (!label || !points) {\n return;\n }\n const box = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n // Combine anchor and tooltip\n const anchorPos = this.getAnchor(points);\n const labelBBox = label.getBBox();\n anchorPos[0] += chart.plotLeft - label.translateX;\n anchorPos[1] += chart.plotTop - label.translateY;\n // When the mouse pointer is between the anchor point and the label,\n // the label should stick.\n box.x = Math.min(0, anchorPos[0]);\n box.y = Math.min(0, anchorPos[1]);\n box.width = (anchorPos[0] < 0 ?\n Math.max(Math.abs(anchorPos[0]), (labelBBox.width - anchorPos[0])) :\n Math.max(Math.abs(anchorPos[0]), labelBBox.width));\n box.height = (anchorPos[1] < 0 ?\n Math.max(Math.abs(anchorPos[1]), (labelBBox.height - Math.abs(anchorPos[1]))) :\n Math.max(Math.abs(anchorPos[1]), labelBBox.height));\n if (tooltip.tracker) {\n tooltip.tracker.attr(box);\n }\n else {\n tooltip.tracker = label.renderer\n .rect(box)\n .addClass('highcharts-tracker')\n .add(label);\n if (!chart.styledMode) {\n tooltip.tracker.attr({\n fill: 'rgba(0,0,0,0)'\n });\n }\n }\n }\n /**\n * @private\n */\n styledModeFormat(formatString) {\n return formatString\n .replace('style=\"font-size: 0.8em\"', 'class=\"highcharts-header\"')\n .replace(/style=\"color:{(point|series)\\.color}\"/g, 'class=\"highcharts-color-{$1.colorIndex} ' +\n '{series.options.className} ' +\n '{point.options.className}\"');\n }\n /**\n * Format the footer/header of the tooltip\n * #3397: abstraction to enable formatting of footer and header\n *\n * @private\n * @function Highcharts.Tooltip#tooltipFooterHeaderFormatter\n */\n tooltipFooterHeaderFormatter(labelConfig, isFooter) {\n const series = labelConfig.series, tooltipOptions = series.tooltipOptions, xAxis = series.xAxis, dateTime = xAxis && xAxis.dateTime, e = {\n isFooter: isFooter,\n labelConfig: labelConfig\n };\n let xDateFormat = tooltipOptions.xDateFormat, formatString = tooltipOptions[isFooter ? 'footerFormat' : 'headerFormat'];\n fireEvent(this, 'headerFormatter', e, function (e) {\n // Guess the best date format based on the closest point distance\n // (#568, #3418)\n if (dateTime && !xDateFormat && isNumber(labelConfig.key)) {\n xDateFormat = dateTime.getXDateFormat(labelConfig.key, tooltipOptions.dateTimeLabelFormats);\n }\n // Insert the footer date format if any\n if (dateTime && xDateFormat) {\n ((labelConfig.point && labelConfig.point.tooltipDateKeys) ||\n ['key']).forEach(function (key) {\n formatString = formatString.replace('{point.' + key + '}', '{point.' + key + ':' + xDateFormat + '}');\n });\n }\n // Replace default header style with class name\n if (series.chart.styledMode) {\n formatString = this.styledModeFormat(formatString);\n }\n e.text = format(formatString, {\n point: labelConfig,\n series: series\n }, this.chart);\n });\n return e.text;\n }\n /**\n * Updates the tooltip with the provided tooltip options.\n *\n * @function Highcharts.Tooltip#update\n *\n * @param {Highcharts.TooltipOptions} options\n * The tooltip options to update.\n */\n update(options) {\n this.destroy();\n // Update user options (#6218)\n merge(true, this.chart.options.tooltip.userOptions, options);\n this.init(this.chart, merge(true, this.options, options));\n }\n /**\n * Find the new position and perform the move\n *\n * @private\n * @function Highcharts.Tooltip#updatePosition\n *\n * @param {Highcharts.Point} point\n */\n updatePosition(point) {\n const { chart, distance, options } = this, pointer = chart.pointer, label = this.getLabel(), \n // Needed for outside: true (#11688)\n { left, top, scaleX, scaleY } = pointer.getChartPosition(), pos = (options.positioner || this.getPosition).call(this, label.width, label.height, point);\n let anchorX = (point.plotX || 0) + chart.plotLeft, anchorY = (point.plotY || 0) + chart.plotTop, pad;\n // Set the renderer size dynamically to prevent document size to change\n if (this.outside) {\n // Corrects positions, occurs with tooltip positioner (#16944)\n if (options.positioner) {\n pos.x += left - distance;\n pos.y += top - distance;\n }\n pad = (options.borderWidth || 0) + 2 * distance;\n this.renderer.setSize(label.width + pad, label.height + pad, false);\n // Anchor and tooltip container need scaling if chart container has\n // scale transform/css zoom. #11329.\n if (scaleX !== 1 || scaleY !== 1) {\n css(this.container, {\n transform: `scale(${scaleX}, ${scaleY})`\n });\n anchorX *= scaleX;\n anchorY *= scaleY;\n }\n anchorX += left - pos.x;\n anchorY += top - pos.y;\n }\n // do the move\n this.move(Math.round(pos.x), Math.round(pos.y || 0), // can be undefined (#3977)\n anchorX, anchorY);\n }\n }\n /* *\n *\n * Class namespace\n *\n * */\n (function (Tooltip) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(PointerClass) {\n if (U.pushUnique(composedMembers, PointerClass)) {\n addEvent(PointerClass, 'afterInit', function () {\n const chart = this.chart;\n if (chart.options.tooltip) {\n /**\n * Tooltip object for points of series.\n *\n * @name Highcharts.Chart#tooltip\n * @type {Highcharts.Tooltip}\n */\n chart.tooltip = new Tooltip(chart, chart.options.tooltip);\n }\n });\n }\n }\n Tooltip.compose = compose;\n })(Tooltip || (Tooltip = {}));\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback function to format the text of the tooltip from scratch.\n *\n * In case of single or shared tooltips, a string should be be returned. In case\n * of splitted tooltips, it should return an array where the first item is the\n * header, and subsequent items are mapped to the points. Return `false` to\n * disable tooltip for a specific point on series.\n *\n * @callback Highcharts.TooltipFormatterCallbackFunction\n *\n * @param {Highcharts.TooltipFormatterContextObject} this\n * Context to format\n *\n * @param {Highcharts.Tooltip} tooltip\n * The tooltip instance\n *\n * @return {false|string|Array<(string|null|undefined)>|null|undefined}\n * Formatted text or false\n */\n /**\n * Configuration for the tooltip formatters.\n *\n * @interface Highcharts.TooltipFormatterContextObject\n * @extends Highcharts.PointLabelObject\n */ /**\n * Array of points in shared tooltips.\n * @name Highcharts.TooltipFormatterContextObject#points\n * @type {Array|undefined}\n */\n /**\n * A callback function to place the tooltip in a specific position.\n *\n * @callback Highcharts.TooltipPositionerCallbackFunction\n *\n * @param {Highcharts.Tooltip} this\n * Tooltip context of the callback.\n *\n * @param {number} labelWidth\n * Width of the tooltip.\n *\n * @param {number} labelHeight\n * Height of the tooltip.\n *\n * @param {Highcharts.TooltipPositionerPointObject} point\n * Point information for positioning a tooltip.\n *\n * @return {Highcharts.PositionObject}\n * New position for the tooltip.\n */\n /**\n * Point information for positioning a tooltip.\n *\n * @interface Highcharts.TooltipPositionerPointObject\n * @extends Highcharts.Point\n */ /**\n * If `tooltip.split` option is enabled and positioner is called for each of the\n * boxes separately, this property indicates the call on the xAxis header, which\n * is not a point itself.\n * @name Highcharts.TooltipPositionerPointObject#isHeader\n * @type {boolean}\n */ /**\n * The reference point relative to the plot area. Add chart.plotLeft to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotX\n * @type {number}\n */ /**\n * The reference point relative to the plot area. Add chart.plotTop to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotY\n * @type {number}\n */\n /**\n * @typedef {\"callout\"|\"circle\"|\"square\"} Highcharts.TooltipShapeValue\n */\n ''; // keeps doclets above in JS file\n\n return Tooltip;\n });\n _registerModule(_modules, 'Core/Series/Point.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (AST, A, D, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { animObject } = A;\n const { defaultOptions } = D;\n const { format } = F;\n const { addEvent, defined, erase, extend, fireEvent, getNestedProperty, isArray, isFunction, isNumber, isObject, merge, objectEach, pick, syncTimeout, removeEvent, uniqueKey } = U;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * The Point object. The point objects are generated from the `series.data`\n * configuration objects or raw numbers. They can be accessed from the\n * `Series.points` array. Other ways to instantiate points are through {@link\n * Highcharts.Series#addPoint} or {@link Highcharts.Series#setData}.\n *\n * @class\n * @name Highcharts.Point\n */\n class Point {\n constructor() {\n /* *\n *\n * Properties\n *\n * */\n /**\n * For categorized axes this property holds the category name for the\n * point. For other axes it holds the X value.\n *\n * @name Highcharts.Point#category\n * @type {number|string}\n */\n this.category = void 0;\n this.destroyed = false;\n this.formatPrefix = 'point';\n this.id = void 0;\n this.isNull = false;\n /**\n * The name of the point. The name can be given as the first position of the\n * point configuration array, or as a `name` property in the configuration:\n *\n * @example\n * // Array config\n * data: [\n * ['John', 1],\n * ['Jane', 2]\n * ]\n *\n * // Object config\n * data: [{\n * name: 'John',\n * y: 1\n * }, {\n * name: 'Jane',\n * y: 2\n * }]\n *\n * @name Highcharts.Point#name\n * @type {string}\n */\n this.name = void 0;\n /**\n * The point's options as applied in the initial configuration, or\n * extended through `Point.update`.\n *\n * In TypeScript you have to extend `PointOptionsObject` via an\n * additional interface to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @name Highcharts.Point#options\n * @type {Highcharts.PointOptionsObject}\n */\n this.options = void 0;\n /**\n * The percentage for points in a stacked series, pies or gauges.\n *\n * @name Highcharts.Point#percentage\n * @type {number|undefined}\n */\n this.percentage = void 0;\n this.selected = false;\n /**\n * The series object associated with the point.\n *\n * @name Highcharts.Point#series\n * @type {Highcharts.Series}\n */\n this.series = void 0;\n /**\n * The attributes of the rendered SVG shape like in `column` or `pie`\n * series.\n *\n * @readonly\n * @name Highcharts.Point#shapeArgs\n * @type {Readonly|undefined}\n */\n this.shapeArgs = void 0;\n /**\n * The total of values in either a stack for stacked series, or a pie in a\n * pie series.\n *\n * @name Highcharts.Point#total\n * @type {number|undefined}\n */\n this.total = void 0;\n /**\n * For certain series types, like pie charts, where individual points can\n * be shown or hidden.\n *\n * @name Highcharts.Point#visible\n * @type {boolean}\n * @default true\n */\n this.visible = true;\n this.x = void 0;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Animate SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#animateBeforeDestroy\n */\n animateBeforeDestroy() {\n const point = this, animateParams = { x: point.startXPos, opacity: 0 }, graphicalProps = point.getGraphicalProps();\n graphicalProps.singular.forEach(function (prop) {\n const isDataLabel = prop === 'dataLabel';\n point[prop] = point[prop].animate(isDataLabel ? {\n x: point[prop].startXPos,\n y: point[prop].startYPos,\n opacity: 0\n } : animateParams);\n });\n graphicalProps.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item.element) {\n item.animate(extend({ x: point.startXPos }, (item.startYPos ? {\n x: item.startXPos,\n y: item.startYPos\n } : {})));\n }\n });\n });\n }\n /**\n * Apply the options containing the x and y data and possible some extra\n * properties. Called on point init or from point.update.\n *\n * @private\n * @function Highcharts.Point#applyOptions\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options as defined in series.data.\n *\n * @param {number} [x]\n * Optionally, the x value.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n */\n applyOptions(options, x) {\n const point = this, series = point.series, pointValKey = series.options.pointValKey || series.pointValKey;\n options = Point.prototype.optionsToObject.call(this, options);\n // copy options directly to point\n extend(point, options);\n point.options = point.options ?\n extend(point.options, options) :\n options;\n // Since options are copied into the Point instance, some accidental\n // options must be shielded (#5681)\n if (options.group) {\n delete point.group;\n }\n if (options.dataLabels) {\n delete point.dataLabels;\n }\n /**\n * The y value of the point.\n * @name Highcharts.Point#y\n * @type {number|undefined}\n */\n // For higher dimension series types. For instance, for ranges, point.y\n // is mapped to point.low.\n if (pointValKey) {\n point.y = Point.prototype.getNestedProperty.call(point, pointValKey);\n }\n point.isNull = this.isValid && !this.isValid();\n point.formatPrefix = point.isNull ? 'null' : 'point'; // #9233, #10874\n // The point is initially selected by options (#5777)\n if (point.selected) {\n point.state = 'select';\n }\n /**\n * The x value of the point.\n * @name Highcharts.Point#x\n * @type {number}\n */\n // If no x is set by now, get auto incremented value. All points must\n // have an x value, however the y value can be null to create a gap in\n // the series\n if ('name' in point &&\n typeof x === 'undefined' &&\n series.xAxis &&\n series.xAxis.hasNames) {\n point.x = series.xAxis.nameToX(point);\n }\n if (typeof point.x === 'undefined' && series) {\n if (typeof x === 'undefined') {\n point.x = series.autoIncrement();\n }\n else {\n point.x = x;\n }\n }\n else if (isNumber(options.x) && series.options.relativeXValue) {\n point.x = series.autoIncrement(options.x);\n }\n return point;\n }\n /**\n * Destroy a point to clear memory. Its reference still stays in\n * `series.data`.\n *\n * @private\n * @function Highcharts.Point#destroy\n */\n destroy() {\n if (!this.destroyed) {\n const point = this, series = point.series, chart = series.chart, dataSorting = series.options.dataSorting, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, animation = animObject(globalAnimation);\n /**\n * Allow to call after animation.\n * @private\n */\n const destroyPoint = () => {\n // Remove all events and elements\n if (point.graphic ||\n point.graphics ||\n point.dataLabel ||\n point.dataLabels) {\n removeEvent(point);\n point.destroyElements();\n }\n for (const prop in point) { // eslint-disable-line guard-for-in\n delete point[prop];\n }\n };\n if (point.legendItem) {\n // pies have legend items\n chart.legend.destroyItem(point);\n }\n if (hoverPoints) {\n point.setState();\n erase(hoverPoints, point);\n if (!hoverPoints.length) {\n chart.hoverPoints = null;\n }\n }\n if (point === chart.hoverPoint) {\n point.onMouseOut();\n }\n // Remove properties after animation\n if (!dataSorting || !dataSorting.enabled) {\n destroyPoint();\n }\n else {\n this.animateBeforeDestroy();\n syncTimeout(destroyPoint, animation.duration);\n }\n chart.pointCount--;\n }\n this.destroyed = true;\n }\n /**\n * Destroy SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#destroyElements\n * @param {Highcharts.Dictionary} [kinds]\n */\n destroyElements(kinds) {\n const point = this, props = point.getGraphicalProps(kinds);\n props.singular.forEach(function (prop) {\n point[prop] = point[prop].destroy();\n });\n props.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item && item.element) {\n item.destroy();\n }\n });\n delete point[plural];\n });\n }\n /**\n * Fire an event on the Point object.\n *\n * @private\n * @function Highcharts.Point#firePointEvent\n *\n * @param {string} eventType\n * Type of the event.\n *\n * @param {Highcharts.Dictionary|Event} [eventArgs]\n * Additional event arguments.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * Default event handler.\n *\n * @emits Highcharts.Point#event:*\n */\n firePointEvent(eventType, eventArgs, defaultFunction) {\n const point = this, series = this.series, seriesOptions = series.options;\n // load event handlers on demand to save time on mouseover/out\n if (seriesOptions.point.events[eventType] ||\n (point.options &&\n point.options.events &&\n point.options.events[eventType])) {\n point.importEvents();\n }\n // add default handler if in selection mode\n if (eventType === 'click' && seriesOptions.allowPointSelect) {\n defaultFunction = function (event) {\n // Control key is for Windows, meta (= Cmd key) for Mac, Shift\n // for Opera.\n if (point.select) { // #2911\n point.select(null, event.ctrlKey || event.metaKey || event.shiftKey);\n }\n };\n }\n fireEvent(point, eventType, eventArgs, defaultFunction);\n }\n /**\n * Get the CSS class names for individual points. Used internally where the\n * returned value is set on every point.\n *\n * @function Highcharts.Point#getClassName\n *\n * @return {string}\n * The class names.\n */\n getClassName() {\n const point = this;\n return 'highcharts-point' +\n (point.selected ? ' highcharts-point-select' : '') +\n (point.negative ? ' highcharts-negative' : '') +\n (point.isNull ? ' highcharts-null-point' : '') +\n (typeof point.colorIndex !== 'undefined' ?\n ' highcharts-color-' + point.colorIndex : '') +\n (point.options.className ? ' ' + point.options.className : '') +\n (point.zone && point.zone.className ? ' ' +\n point.zone.className.replace('highcharts-negative', '') : '');\n }\n /**\n * Get props of all existing graphical point elements.\n *\n * @private\n * @function Highcharts.Point#getGraphicalProps\n */\n getGraphicalProps(kinds) {\n const point = this, props = [], graphicalProps = { singular: [], plural: [] };\n let prop, i;\n kinds = kinds || { graphic: 1, dataLabel: 1 };\n if (kinds.graphic) {\n props.push('graphic');\n }\n if (kinds.dataLabel) {\n props.push('dataLabel', 'dataLabelPath', 'dataLabelUpper', 'connector');\n }\n i = props.length;\n while (i--) {\n prop = props[i];\n if (point[prop]) {\n graphicalProps.singular.push(prop);\n }\n }\n [\n 'graphic',\n 'dataLabel',\n 'connector'\n ].forEach(function (prop) {\n const plural = prop + 's';\n if (kinds[prop] && point[plural]) {\n graphicalProps.plural.push(plural);\n }\n });\n return graphicalProps;\n }\n /**\n * Return the configuration hash needed for the data label and tooltip\n * formatters.\n *\n * @function Highcharts.Point#getLabelConfig\n *\n * @return {Highcharts.PointLabelObject}\n * Abstract object used in formatters and formats.\n */\n getLabelConfig() {\n return {\n x: this.category,\n y: this.y,\n color: this.color,\n colorIndex: this.colorIndex,\n key: this.name || this.category,\n series: this.series,\n point: this,\n percentage: this.percentage,\n total: this.total || this.stackTotal\n };\n }\n /**\n * Returns the value of the point property for a given value.\n * @private\n */\n getNestedProperty(key) {\n if (!key) {\n return;\n }\n if (key.indexOf('custom.') === 0) {\n return getNestedProperty(key, this.options);\n }\n return this[key];\n }\n /**\n * In a series with `zones`, return the zone that the point belongs to.\n *\n * @function Highcharts.Point#getZone\n *\n * @return {Highcharts.SeriesZonesOptionsObject}\n * The zone item.\n */\n getZone() {\n const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';\n let zone, i = 0;\n zone = zones[i];\n while (this[zoneAxis] >= zone.value) {\n zone = zones[++i];\n }\n // For resetting or reusing the point (#8100)\n if (!this.nonZonedColor) {\n this.nonZonedColor = this.color;\n }\n if (zone && zone.color && !this.options.color) {\n this.color = zone.color;\n }\n else {\n this.color = this.nonZonedColor;\n }\n return zone;\n }\n /**\n * Utility to check if point has new shape type. Used in column series and\n * all others that are based on column series.\n * @private\n */\n hasNewShapeType() {\n const point = this;\n const oldShapeType = point.graphic &&\n (point.graphic.symbolName || point.graphic.element.nodeName);\n return oldShapeType !== this.shapeType;\n }\n /**\n * Initialize the point. Called internally based on the `series.data`\n * option.\n *\n * @function Highcharts.Point#init\n *\n * @param {Highcharts.Series} series\n * The series object containing this point.\n *\n * @param {Highcharts.PointOptionsType} options\n * The data in either number, array or object format.\n *\n * @param {number} [x]\n * Optionally, the X value of the point.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n *\n * @emits Highcharts.Point#event:afterInit\n */\n init(series, options, x) {\n this.series = series;\n this.applyOptions(options, x);\n // Add a unique ID to the point if none is assigned\n this.id = defined(this.id) ? this.id : uniqueKey();\n this.resolveColor();\n series.chart.pointCount++;\n fireEvent(this, 'afterInit');\n return this;\n }\n /**\n * Determine if point is valid.\n * @private\n * @function Highcharts.Point#isValid\n */\n isValid() {\n return this.x !== null && isNumber(this.y);\n }\n /**\n * Transform number or array configs into objects. Also called for object\n * configs. Used internally to unify the different configuration formats for\n * points. For example, a simple number `10` in a line series will be\n * transformed to `{ y: 10 }`, and an array config like `[1, 10]` in a\n * scatter series will be transformed to `{ x: 1, y: 10 }`.\n *\n * @deprecated\n * @function Highcharts.Point#optionsToObject\n *\n * @param {Highcharts.PointOptionsType} options\n * Series data options.\n *\n * @return {Highcharts.Dictionary<*>}\n * Transformed point options.\n */\n optionsToObject(options) {\n const series = this.series, keys = series.options.keys, pointArrayMap = keys || series.pointArrayMap || ['y'], valueCount = pointArrayMap.length;\n let ret = {}, firstItemType, i = 0, j = 0;\n if (isNumber(options) || options === null) {\n ret[pointArrayMap[0]] = options;\n }\n else if (isArray(options)) {\n // with leading x value\n if (!keys && options.length > valueCount) {\n firstItemType = typeof options[0];\n if (firstItemType === 'string') {\n ret.name = options[0];\n }\n else if (firstItemType === 'number') {\n ret.x = options[0];\n }\n i++;\n }\n while (j < valueCount) {\n // Skip undefined positions for keys\n if (!keys || typeof options[i] !== 'undefined') {\n if (pointArrayMap[j].indexOf('.') > 0) {\n // Handle nested keys, e.g. ['color.pattern.image']\n // Avoid function call unless necessary.\n Point.prototype.setNestedProperty(ret, options[i], pointArrayMap[j]);\n }\n else {\n ret[pointArrayMap[j]] = options[i];\n }\n }\n i++;\n j++;\n }\n }\n else if (typeof options === 'object') {\n ret = options;\n // This is the fastest way to detect if there are individual point\n // dataLabels that need to be considered in drawDataLabels. These\n // can only occur in object configs.\n if (options.dataLabels) {\n series._hasPointLabels = true;\n }\n // Same approach as above for markers\n if (options.marker) {\n series._hasPointMarkers = true;\n }\n }\n return ret;\n }\n /**\n * Get the pixel position of the point relative to the plot area.\n * @private\n * @function Highcharts.Point#pos\n */\n pos(chartCoordinates, plotY = this.plotY) {\n if (!this.destroyed) {\n const { plotX, series } = this, { chart, xAxis, yAxis } = series;\n let posX = 0, posY = 0;\n if (isNumber(plotX) && isNumber(plotY)) {\n if (chartCoordinates) {\n posX = xAxis ? xAxis.pos : chart.plotLeft;\n posY = yAxis ? yAxis.pos : chart.plotTop;\n }\n return chart.inverted && xAxis && yAxis ?\n [yAxis.len - plotY + posY, xAxis.len - plotX + posX] :\n [plotX + posX, plotY + posY];\n }\n }\n }\n /**\n * @private\n * @function Highcharts.Point#resolveColor\n */\n resolveColor() {\n const series = this.series, optionsChart = series.chart.options.chart, styledMode = series.chart.styledMode;\n let color, colors, colorCount = optionsChart.colorCount, colorIndex;\n // remove points nonZonedColor for later recalculation\n delete this.nonZonedColor;\n if (series.options.colorByPoint) {\n if (!styledMode) {\n colors = series.options.colors || series.chart.options.colors;\n color = colors[series.colorCounter];\n colorCount = colors.length;\n }\n colorIndex = series.colorCounter;\n series.colorCounter++;\n // loop back to zero\n if (series.colorCounter === colorCount) {\n series.colorCounter = 0;\n }\n }\n else {\n if (!styledMode) {\n color = series.color;\n }\n colorIndex = series.colorIndex;\n }\n /**\n * The point's current color index, used in styled mode instead of\n * `color`. The color index is inserted in class names used for styling.\n *\n * @name Highcharts.Point#colorIndex\n * @type {number|undefined}\n */\n this.colorIndex = pick(this.options.colorIndex, colorIndex);\n /**\n * The point's current color.\n *\n * @name Highcharts.Point#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */\n this.color = pick(this.options.color, color);\n }\n /**\n * Set a value in an object, on the property defined by key. The key\n * supports nested properties using dot notation. The function modifies the\n * input object and does not make a copy.\n *\n * @function Highcharts.Point#setNestedProperty\n *\n * @param {T} object\n * The object to set the value on.\n *\n * @param {*} value\n * The value to set.\n *\n * @param {string} key\n * Key to the property to set.\n *\n * @return {T}\n * The modified object.\n */\n setNestedProperty(object, value, key) {\n const nestedKeys = key.split('.');\n nestedKeys.reduce(function (result, key, i, arr) {\n const isLastKey = arr.length - 1 === i;\n result[key] = (isLastKey ?\n value :\n isObject(result[key], true) ?\n result[key] :\n {});\n return result[key];\n }, object);\n return object;\n }\n shouldDraw() {\n return !this.isNull;\n }\n /**\n * Extendable method for formatting each point's tooltip line.\n *\n * @function Highcharts.Point#tooltipFormatter\n *\n * @param {string} pointFormat\n * The point format.\n *\n * @return {string}\n * A string to be concatenated in to the common tooltip text.\n */\n tooltipFormatter(pointFormat) {\n // Insert options for valueDecimals, valuePrefix, and valueSuffix\n const series = this.series, seriesTooltipOptions = series.tooltipOptions, valueDecimals = pick(seriesTooltipOptions.valueDecimals, ''), valuePrefix = seriesTooltipOptions.valuePrefix || '', valueSuffix = seriesTooltipOptions.valueSuffix || '';\n // Replace default point style with class name\n if (series.chart.styledMode) {\n pointFormat =\n series.chart.tooltip.styledModeFormat(pointFormat);\n }\n // Loop over the point array map and replace unformatted values with\n // sprintf formatting markup\n (series.pointArrayMap || ['y']).forEach(function (key) {\n key = '{point.' + key; // without the closing bracket\n if (valuePrefix || valueSuffix) {\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), valuePrefix + key + '}' + valueSuffix);\n }\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), key + ':,.' + valueDecimals + 'f}');\n });\n return format(pointFormat, {\n point: this,\n series: this.series\n }, series.chart);\n }\n /**\n * Update point with new options (typically x/y data) and optionally redraw\n * the series.\n *\n * @sample highcharts/members/point-update-column/\n * Update column value\n * @sample highcharts/members/point-update-pie/\n * Update pie slice\n * @sample maps/members/point-update/\n * Update map area value in Highmaps\n *\n * @function Highcharts.Point#update\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. Point options are handled as described under\n * the `series.type.data` item for each series type. For example\n * for a line series, if options is a single number, the point will\n * be given that number as the marin y value. If it is an array, it\n * will be interpreted as x and y values respectively. If it is an\n * object, advanced options are applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is updated. If doing\n * more operations on the chart, it is best practice to set\n * `redraw` to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Point#event:update\n */\n update(options, redraw, animation, runEvent) {\n const point = this, series = point.series, graphic = point.graphic, chart = series.chart, seriesOptions = series.options;\n let i;\n redraw = pick(redraw, true);\n /**\n * @private\n */\n function update() {\n point.applyOptions(options);\n // Update visuals, #4146\n // Handle mock graphic elements for a11y, #12718\n const hasMockGraphic = graphic && point.hasMockGraphic;\n const shouldDestroyGraphic = point.y === null ?\n !hasMockGraphic :\n hasMockGraphic;\n if (graphic && shouldDestroyGraphic) {\n point.graphic = graphic.destroy();\n delete point.hasMockGraphic;\n }\n if (isObject(options, true)) {\n // Destroy so we can get new elements\n if (graphic && graphic.element) {\n // \"null\" is also a valid symbol\n if (options &&\n options.marker &&\n typeof options.marker.symbol !== 'undefined') {\n point.graphic = graphic.destroy();\n }\n }\n if (options && options.dataLabels && point.dataLabel) {\n point.dataLabel = point.dataLabel.destroy(); // #2468\n }\n if (point.connector) {\n point.connector = point.connector.destroy(); // #7243\n }\n }\n // record changes in the parallel arrays\n i = point.index;\n series.updateParallelArrays(point, i);\n // Record the options to options.data. If the old or the new config\n // is an object, use point options, otherwise use raw options\n // (#4701, #4916).\n seriesOptions.data[i] = (isObject(seriesOptions.data[i], true) ||\n isObject(options, true)) ?\n point.options :\n pick(options, seriesOptions.data[i]);\n // redraw\n series.isDirty = series.isDirtyData = true;\n if (!series.fixedBox && series.hasCartesianSeries) { // #1906, #2320\n chart.isDirtyBox = true;\n }\n if (seriesOptions.legendType === 'point') { // #1831, #1885\n chart.isDirtyLegend = true;\n }\n if (redraw) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of doing the update\n if (runEvent === false) { // When called from setData\n update();\n }\n else {\n point.firePointEvent('update', { options: options }, update);\n }\n }\n /**\n * Remove a point and optionally redraw the series and if necessary the axes\n *\n * @sample highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n * @sample highcharts/members/point-remove/\n * Remove pie slice\n * @sample maps/members/point-remove/\n * Remove selected points in Highmaps\n *\n * @function Highcharts.Point#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call. When\n * doing more operations on the chart, for example running\n * `point.remove()` in a loop, it is best practice to set `redraw`\n * to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial} [animation=false]\n * Whether to apply animation, and optionally animation\n * configuration.\n */\n remove(redraw, animation) {\n this.series.removePoint(this.series.data.indexOf(this), redraw, animation);\n }\n /**\n * Toggle the selection status of a point.\n *\n * @see Highcharts.Chart#getSelectedPoints\n *\n * @sample highcharts/members/point-select/\n * Select a point from a button\n * @sample highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample maps/series/data-id/\n * Select a point in Highmaps\n *\n * @function Highcharts.Point#select\n *\n * @param {boolean} [selected]\n * When `true`, the point is selected. When `false`, the point is\n * unselected. When `null` or `undefined`, the selection state is toggled.\n *\n * @param {boolean} [accumulate=false]\n * When `true`, the selection is added to other selected points.\n * When `false`, other selected points are deselected. Internally in\n * Highcharts, when\n * [allowPointSelect](https://api.highcharts.com/highcharts/plotOptions.series.allowPointSelect)\n * is `true`, selected points are accumulated on Control, Shift or Cmd\n * clicking the point.\n *\n * @emits Highcharts.Point#event:select\n * @emits Highcharts.Point#event:unselect\n */\n select(selected, accumulate) {\n const point = this, series = point.series, chart = series.chart;\n selected = pick(selected, !point.selected);\n this.selectedStaging = selected;\n // fire the event with the default handler\n point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {\n /**\n * Whether the point is selected or not.\n *\n * @see Point#select\n * @see Chart#getSelectedPoints\n *\n * @name Highcharts.Point#selected\n * @type {boolean}\n */\n point.selected = point.options.selected = selected;\n series.options.data[series.data.indexOf(point)] =\n point.options;\n point.setState(selected && 'select');\n // unselect all other points unless Ctrl or Cmd + click\n if (!accumulate) {\n chart.getSelectedPoints().forEach(function (loopPoint) {\n const loopSeries = loopPoint.series;\n if (loopPoint.selected && loopPoint !== point) {\n loopPoint.selected = loopPoint.options.selected =\n false;\n loopSeries.options.data[loopSeries.data.indexOf(loopPoint)] = loopPoint.options;\n // Programatically selecting a point should restore\n // normal state, but when click happened on other\n // point, set inactive state to match other points\n loopPoint.setState(chart.hoverPoints &&\n loopSeries.options.inactiveOtherPoints ?\n 'inactive' : '');\n loopPoint.firePointEvent('unselect');\n }\n });\n }\n });\n delete this.selectedStaging;\n }\n /**\n * Runs on mouse over the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOver\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments.\n */\n onMouseOver(e) {\n const point = this, series = point.series, chart = series.chart, pointer = chart.pointer;\n e = e ?\n pointer.normalize(e) :\n // In cases where onMouseOver is called directly without an event\n pointer.getChartCoordinatesFromPoint(point, chart.inverted);\n pointer.runPointActions(e, point);\n }\n /**\n * Runs on mouse out from the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOut\n * @emits Highcharts.Point#event:mouseOut\n */\n onMouseOut() {\n const point = this, chart = point.series.chart;\n point.firePointEvent('mouseOut');\n if (!point.series.options.inactiveOtherPoints) {\n (chart.hoverPoints || []).forEach(function (p) {\n p.setState();\n });\n }\n chart.hoverPoints = chart.hoverPoint = null;\n }\n /**\n * Import events from the series' and point's options. Only do it on\n * demand, to save processing time on hovering.\n *\n * @private\n * @function Highcharts.Point#importEvents\n */\n importEvents() {\n if (!this.hasImportedEvents) {\n const point = this, options = merge(point.series.options.point, point.options), events = options.events;\n point.events = events;\n objectEach(events, function (event, eventType) {\n if (isFunction(event)) {\n addEvent(point, eventType, event);\n }\n });\n this.hasImportedEvents = true;\n }\n }\n /**\n * Set the point's state.\n *\n * @function Highcharts.Point#setState\n *\n * @param {Highcharts.PointStateValue|\"\"} [state]\n * The new state, can be one of `'hover'`, `'select'`, `'inactive'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [move]\n * State for animation.\n *\n * @emits Highcharts.Point#event:afterSetState\n */\n setState(state, move) {\n const point = this, series = point.series, previousState = point.state, stateOptions = (series.options.states[state || 'normal'] ||\n {}), markerOptions = (defaultOptions.plotOptions[series.type].marker &&\n series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = ((markerOptions &&\n markerOptions.states &&\n markerOptions.states[state || 'normal']) || {}), stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);\n let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;\n state = state || ''; // empty string\n if (\n // already has this state\n (state === point.state && !move) ||\n // selected points don't respond to hover\n (point.selected && state !== 'select') ||\n // series' state options is disabled\n (stateOptions.enabled === false) ||\n // general point marker's state options is disabled\n (state && (stateDisabled ||\n (normalDisabled &&\n markerStateOptions.enabled === false))) ||\n // individual point marker's state options is disabled\n (state &&\n pointMarker.states &&\n pointMarker.states[state] &&\n pointMarker.states[state].enabled === false) // #1610\n ) {\n return;\n }\n point.state = state;\n if (hasMarkers) {\n markerAttribs = series.markerAttribs(point, state);\n }\n // Apply hover styles to the existing point\n // Prevent from mocked null points (#14966)\n if (point.graphic && !point.hasMockGraphic) {\n if (previousState) {\n point.graphic.removeClass('highcharts-point-' + previousState);\n }\n if (state) {\n point.graphic.addClass('highcharts-point-' + state);\n }\n if (!chart.styledMode) {\n pointAttribs = series.pointAttribs(point, state);\n pointAttribsAnimation = pick(chart.options.chart.animation, stateOptions.animation);\n const opacity = pointAttribs.opacity;\n // Some inactive points (e.g. slices in pie) should apply\n // opacity also for their labels\n if (series.options.inactiveOtherPoints && isNumber(opacity)) {\n (point.dataLabels || []).forEach(function (label) {\n if (label &&\n !label.hasClass('highcharts-data-label-hidden')) {\n label.animate({ opacity }, pointAttribsAnimation);\n }\n });\n if (point.connector) {\n point.connector.animate({ opacity }, pointAttribsAnimation);\n }\n }\n point.graphic.animate(pointAttribs, pointAttribsAnimation);\n }\n if (markerAttribs) {\n point.graphic.animate(markerAttribs, pick(\n // Turn off globally:\n chart.options.chart.animation, markerStateOptions.animation, markerOptions.animation));\n }\n // Zooming in from a range with no markers to a range with markers\n if (stateMarkerGraphic) {\n stateMarkerGraphic.hide();\n }\n }\n else {\n // if a graphic is not applied to each point in the normal state,\n // create a shared graphic for the hover state\n if (state && markerStateOptions) {\n newSymbol = pointMarker.symbol || series.symbol;\n // If the point has another symbol than the previous one, throw\n // away the state marker graphic and force a new one (#1459)\n if (stateMarkerGraphic &&\n stateMarkerGraphic.currentSymbol !== newSymbol) {\n stateMarkerGraphic = stateMarkerGraphic.destroy();\n }\n // Add a new state marker graphic\n if (markerAttribs) {\n if (!stateMarkerGraphic) {\n if (newSymbol) {\n series.stateMarkerGraphic = stateMarkerGraphic =\n chart.renderer\n .symbol(newSymbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height)\n .add(series.markerGroup);\n stateMarkerGraphic.currentSymbol = newSymbol;\n }\n // Move the existing graphic\n }\n else {\n stateMarkerGraphic[move ? 'animate' : 'attr']({\n x: markerAttribs.x,\n y: markerAttribs.y\n });\n }\n }\n if (!chart.styledMode && stateMarkerGraphic &&\n point.state !== 'inactive') {\n stateMarkerGraphic.attr(series.pointAttribs(point, state));\n }\n }\n if (stateMarkerGraphic) {\n stateMarkerGraphic[state && point.isInside ? 'show' : 'hide'](); // #2450\n stateMarkerGraphic.element.point = point; // #4310\n stateMarkerGraphic.addClass(point.getClassName(), true);\n }\n }\n // Show me your halo\n const haloOptions = stateOptions.halo;\n const markerGraphic = (point.graphic || stateMarkerGraphic);\n const markerVisibility = (markerGraphic && markerGraphic.visibility || 'inherit');\n if (haloOptions &&\n haloOptions.size &&\n markerGraphic &&\n markerVisibility !== 'hidden' &&\n !point.isCluster) {\n if (!halo) {\n series.halo = halo = chart.renderer.path()\n // #5818, #5903, #6705\n .add(markerGraphic.parentGroup);\n }\n halo.show()[move ? 'animate' : 'attr']({\n d: point.haloPath(haloOptions.size)\n });\n halo.attr({\n 'class': 'highcharts-halo highcharts-color-' +\n pick(point.colorIndex, series.colorIndex) +\n (point.className ? ' ' + point.className : ''),\n 'visibility': markerVisibility,\n 'zIndex': -1 // #4929, #8276\n });\n halo.point = point; // #6055\n if (!chart.styledMode) {\n halo.attr(extend({\n 'fill': point.color || series.color,\n 'fill-opacity': haloOptions.opacity\n }, AST.filterUserAttributes(haloOptions.attributes || {})));\n }\n }\n else if (halo && halo.point && halo.point.haloPath) {\n // Animate back to 0 on the current halo point (#6055)\n halo.animate({ d: halo.point.haloPath(0) }, null, \n // Hide after unhovering. The `complete` callback runs in the\n // halo's context (#7681).\n halo.hide);\n }\n fireEvent(point, 'afterSetState', { state });\n }\n /**\n * Get the path definition for the halo, which is usually a shadow-like\n * circle around the currently hovered point.\n *\n * @function Highcharts.Point#haloPath\n *\n * @param {number} size\n * The radius of the circular halo.\n *\n * @return {Highcharts.SVGPathArray}\n * The path definition.\n */\n haloPath(size) {\n const pos = this.pos();\n return pos ? this.series.chart.renderer.symbols.circle(Math.floor(pos[0]) - size, pos[1] - size, size * 2, size * 2) : [];\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Function callback when a series point is clicked. Return false to cancel the\n * action.\n *\n * @callback Highcharts.PointClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point where the event occured.\n *\n * @param {Highcharts.PointClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series point.\n *\n * @interface Highcharts.PointClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Clicked point.\n * @name Highcharts.PointClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Configuration for the data label and tooltip formatters.\n *\n * @interface Highcharts.PointLabelObject\n */ /**\n * The point's current color.\n * @name Highcharts.PointLabelObject#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * The point's current color index, used in styled mode instead of `color`. The\n * color index is inserted in class names used for styling.\n * @name Highcharts.PointLabelObject#colorIndex\n * @type {number}\n */ /**\n * The name of the related point.\n * @name Highcharts.PointLabelObject#key\n * @type {string|undefined}\n */ /**\n * The percentage for related points in a stacked series or pies.\n * @name Highcharts.PointLabelObject#percentage\n * @type {number}\n */ /**\n * The related point. The point name, if defined, is available through\n * `this.point.name`.\n * @name Highcharts.PointLabelObject#point\n * @type {Highcharts.Point}\n */ /**\n * The related series. The series name is available through `this.series.name`.\n * @name Highcharts.PointLabelObject#series\n * @type {Highcharts.Series}\n */ /**\n * The total of values in either a stack for stacked series, or a pie in a pie\n * series.\n * @name Highcharts.PointLabelObject#total\n * @type {number|undefined}\n */ /**\n * For categorized axes this property holds the category name for the point. For\n * other axes it holds the X value.\n * @name Highcharts.PointLabelObject#x\n * @type {number|string|undefined}\n */ /**\n * The y value of the point.\n * @name Highcharts.PointLabelObject#y\n * @type {number|null|undefined}\n */\n /**\n * Gets fired when the mouse leaves the area close to the point.\n *\n * @callback Highcharts.PointMouseOutCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the area close to the point.\n *\n * @callback Highcharts.PointMouseOverCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * The generic point options for all series.\n *\n * In TypeScript you have to extend `PointOptionsObject` with an additional\n * declaration to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @interface Highcharts.PointOptionsObject\n */\n /**\n * Possible option types for a data point. Use `null` to indicate a gap.\n *\n * @typedef {number|string|Highcharts.PointOptionsObject|Array<(number|string|null)>|null} Highcharts.PointOptionsType\n */\n /**\n * Gets fired when the point is removed using the `.remove()` method.\n *\n * @callback Highcharts.PointRemoveCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the point state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.PointStateValue\n */\n /**\n * Gets fired when the point is updated programmatically through the `.update()`\n * method.\n *\n * @callback Highcharts.PointUpdateCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointUpdateEventObject} event\n * Event that occured.\n */\n /**\n * Information about the update event.\n *\n * @interface Highcharts.PointUpdateEventObject\n * @extends global.Event\n */ /**\n * Options data of the update event.\n * @name Highcharts.PointUpdateEventObject#options\n * @type {Highcharts.PointOptionsType}\n */\n /**\n * @interface Highcharts.PointEventsOptionsObject\n */ /**\n * Fires when the point is selected either programmatically or following a click\n * on the point. One parameter, `event`, is passed to the function. Returning\n * `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#select\n * @type {Highcharts.PointSelectCallbackFunction|undefined}\n */ /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point. One parameter, `event`, is passed to the function.\n * Returning `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#unselect\n * @type {Highcharts.PointUnselectCallbackFunction|undefined}\n */\n /**\n * Information about the select/unselect event.\n *\n * @interface Highcharts.PointInteractionEventObject\n * @extends global.Event\n */ /**\n * @name Highcharts.PointInteractionEventObject#accumulate\n * @type {boolean}\n */\n /**\n * Gets fired when the point is selected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointSelectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointUnselectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n ''; // keeps doclets above in JS file.\n\n return Point;\n });\n _registerModule(_modules, 'Core/Pointer.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { parse: color } = Color;\n const { charts, noop } = H;\n const { addEvent, attr, css, defined, extend, find, fireEvent, isNumber, isObject, objectEach, offset, pick, splat } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * The mouse and touch tracker object. Each {@link Chart} item has one\n * associated Pointer item that can be accessed from the {@link Chart.pointer}\n * property.\n *\n * @class\n * @name Highcharts.Pointer\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and tooltip\n * structures.\n */\n class Pointer {\n /* *\n *\n * Constructors\n *\n * */\n constructor(chart, options) {\n this.lastValidTouch = {};\n this.pinchDown = [];\n this.runChartClick = false;\n this.eventsToUnbind = [];\n this.chart = chart;\n this.hasDragged = false;\n this.options = options;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set inactive state to all series that are not currently hovered,\n * or, if `inactiveOtherPoints` is set to true, set inactive state to\n * all points within that series.\n *\n * @private\n * @function Highcharts.Pointer#applyInactiveState\n *\n * @param {Array} points\n * Currently hovered points\n */\n applyInactiveState(points) {\n let activeSeries = [], series;\n // Get all active series from the hovered points\n (points || []).forEach(function (item) {\n series = item.series;\n // Include itself\n activeSeries.push(series);\n // Include parent series\n if (series.linkedParent) {\n activeSeries.push(series.linkedParent);\n }\n // Include all child series\n if (series.linkedSeries) {\n activeSeries = activeSeries.concat(series.linkedSeries);\n }\n // Include navigator series\n if (series.navigatorSeries) {\n activeSeries.push(series.navigatorSeries);\n }\n });\n // Now loop over all series, filtering out active series\n this.chart.series.forEach(function (inactiveSeries) {\n if (activeSeries.indexOf(inactiveSeries) === -1) {\n // Inactive series\n inactiveSeries.setState('inactive', true);\n }\n else if (inactiveSeries.options.inactiveOtherPoints) {\n // Active series, but other points should be inactivated\n inactiveSeries.setAllPointsToState('inactive');\n }\n });\n }\n /**\n * Destroys the Pointer object and disconnects DOM events.\n *\n * @function Highcharts.Pointer#destroy\n */\n destroy() {\n const pointer = this;\n this.eventsToUnbind.forEach((unbind) => unbind());\n this.eventsToUnbind = [];\n if (!H.chartCount) {\n if (Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = Pointer.unbindDocumentMouseUp();\n }\n if (Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = (Pointer.unbindDocumentTouchEnd());\n }\n }\n // memory and CPU leak\n clearInterval(pointer.tooltipTimeout);\n objectEach(pointer, function (_val, prop) {\n pointer[prop] = void 0;\n });\n }\n /**\n * Calculate attrs for selection marker.\n * @private\n * @function Highcharts.Pointer#getSelectionMarkerAttrs\n * @emits getSelectionMarkerAttrs\n */\n getSelectionMarkerAttrs(chartX, chartY) {\n const e = {\n args: { chartX, chartY },\n attrs: {},\n shapeType: 'rect'\n };\n fireEvent(this, 'getSelectionMarkerAttrs', e, (e) => {\n const { chart, mouseDownX = 0, mouseDownY = 0, zoomHor, zoomVert } = this, attrs = e.attrs;\n let size;\n attrs.x = chart.plotLeft;\n attrs.y = chart.plotTop;\n attrs.width = zoomHor ? 1 : chart.plotWidth;\n attrs.height = zoomVert ? 1 : chart.plotHeight;\n // Adjust the width of the selection marker\n if (zoomHor) {\n size = chartX - mouseDownX;\n attrs.width = Math.abs(size);\n attrs.x = (size > 0 ? 0 : size) + mouseDownX;\n }\n // Adjust the height of the selection marker\n if (zoomVert) {\n size = chartY - mouseDownY;\n attrs.height = Math.abs(size);\n attrs.y = (size > 0 ? 0 : size) + mouseDownY;\n }\n });\n return e;\n }\n /**\n * Perform a drag operation in response to a mousemove event while the mouse\n * is down.\n * @private\n * @function Highcharts.Pointer#drag\n */\n drag(e) {\n const chart = this.chart, chartOptions = chart.options.chart, plotLeft = chart.plotLeft, plotTop = chart.plotTop, plotWidth = chart.plotWidth, plotHeight = chart.plotHeight, mouseDownX = (this.mouseDownX || 0), mouseDownY = (this.mouseDownY || 0), panningEnabled = isObject(chartOptions.panning) ?\n chartOptions.panning && chartOptions.panning.enabled :\n chartOptions.panning, panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);\n let chartX = e.chartX, chartY = e.chartY, clickedInside, selectionMarker = this.selectionMarker;\n // If the device supports both touch and mouse (like IE11), and we are\n // touch-dragging inside the plot area, don't handle the mouse event.\n // #4339.\n if (selectionMarker && selectionMarker.touch) {\n return;\n }\n // If the mouse is outside the plot area, adjust to coordinates\n // inside to prevent the selection marker from going outside\n if (chartX < plotLeft) {\n chartX = plotLeft;\n }\n else if (chartX > plotLeft + plotWidth) {\n chartX = plotLeft + plotWidth;\n }\n if (chartY < plotTop) {\n chartY = plotTop;\n }\n else if (chartY > plotTop + plotHeight) {\n chartY = plotTop + plotHeight;\n }\n // determine if the mouse has moved more than 10px\n this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +\n Math.pow(mouseDownY - chartY, 2));\n if (this.hasDragged > 10) {\n clickedInside = chart.isInsidePlot(mouseDownX - plotLeft, mouseDownY - plotTop, {\n visiblePlotOnly: true\n });\n const { shapeType, attrs } = this.getSelectionMarkerAttrs(chartX, chartY);\n // make a selection\n if ((chart.hasCartesianSeries || chart.mapView) &&\n (this.zoomX || this.zoomY) &&\n clickedInside &&\n !panKey) {\n if (!selectionMarker) {\n this.selectionMarker = selectionMarker =\n chart.renderer[shapeType]();\n selectionMarker\n .attr({\n 'class': 'highcharts-selection-marker',\n zIndex: 7\n })\n .add();\n if (!chart.styledMode) {\n selectionMarker.attr({\n fill: chartOptions.selectionMarkerFill ||\n color(\"#334eff\" /* Palette.highlightColor80 */)\n .setOpacity(0.25).get()\n });\n }\n }\n }\n if (selectionMarker) {\n selectionMarker.attr(attrs);\n }\n // panning\n if (clickedInside &&\n !selectionMarker &&\n panningEnabled) {\n chart.pan(e, chartOptions.panning);\n }\n }\n }\n /**\n * Start a drag operation.\n * @private\n * @function Highcharts.Pointer#dragStart\n */\n dragStart(e) {\n const chart = this.chart;\n // Record the start position\n chart.mouseIsDown = e.type;\n chart.cancelClick = false;\n chart.mouseDownX = this.mouseDownX = e.chartX;\n chart.mouseDownY = this.mouseDownY = e.chartY;\n }\n /**\n * Get selection box to calculate extremes\n * @private\n * @function Highcharts.Pointer#getSelectionBox\n * @emits getSelectionBox\n */\n getSelectionBox(marker) {\n const e = {\n args: { marker },\n result: {}\n };\n fireEvent(this, 'getSelectionBox', e, (e) => {\n e.result = {\n x: marker.attr ? +marker.attr('x') : marker.x,\n y: marker.attr ? +marker.attr('y') : marker.y,\n width: marker.attr ? marker.attr('width') : marker.width,\n height: marker.attr ? marker.attr('height') : marker.height\n };\n });\n return e.result;\n }\n /**\n * On mouse up or touch end across the entire document, drop the selection.\n * @private\n * @function Highcharts.Pointer#drop\n */\n drop(e) {\n const pointer = this, chart = this.chart, hasPinched = this.hasPinched;\n if (this.selectionMarker) {\n const { x, y, width, height } = this.getSelectionBox(this.selectionMarker);\n const selectionData = {\n originalEvent: e,\n xAxis: [],\n yAxis: [],\n x,\n y,\n width,\n height\n };\n // Start by false runZoom, unless when we have a mapView, in\n // which case the zoom will be handled in the selection event.\n let runZoom = Boolean(chart.mapView);\n // a selection has been made\n if (this.hasDragged || hasPinched) {\n // record each axis' min and max\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled &&\n defined(axis.min) &&\n (hasPinched ||\n pointer[{\n xAxis: 'zoomX',\n yAxis: 'zoomY'\n }[axis.coll]]) &&\n isNumber(x) &&\n isNumber(y) &&\n isNumber(width) &&\n isNumber(height)) { // #859, #3569\n const horiz = axis.horiz, minPixelPadding = e.type === 'touchend' ?\n axis.minPixelPadding :\n 0, // #1207, #3075\n selectionMin = axis.toValue((horiz ? x : y) + minPixelPadding), selectionMax = axis.toValue((horiz ? x + width : y + height) -\n minPixelPadding);\n selectionData[axis.coll].push({\n axis: axis,\n // Min/max for reversed axes\n min: Math.min(selectionMin, selectionMax),\n max: Math.max(selectionMin, selectionMax)\n });\n runZoom = true;\n }\n });\n if (runZoom) {\n fireEvent(chart, 'selection', selectionData, function (args) {\n chart.zoom(extend(args, hasPinched ?\n { animation: false } :\n null));\n });\n }\n }\n if (isNumber(chart.index)) {\n this.selectionMarker = this.selectionMarker.destroy();\n }\n // Reset scaling preview\n if (hasPinched) {\n this.scaleGroups();\n }\n }\n // Reset all. Check isNumber because it may be destroyed on mouse up\n // (#877)\n if (chart && isNumber(chart.index)) {\n css(chart.container, { cursor: chart._cursor });\n chart.cancelClick = this.hasDragged > 10; // #370\n chart.mouseIsDown = this.hasDragged = this.hasPinched = false;\n this.pinchDown = [];\n }\n }\n /**\n * Finds the closest point to a set of coordinates, using the k-d-tree\n * algorithm.\n *\n * @function Highcharts.Pointer#findNearestKDPoint\n *\n * @param {Array} series\n * All the series to search in.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} e\n * The pointer event object, containing chart coordinates of the pointer.\n *\n * @return {Highcharts.Point|undefined}\n * The point closest to given coordinates.\n */\n findNearestKDPoint(series, shared, e) {\n let closest;\n /** @private */\n function sort(p1, p2) {\n const isCloserX = p1.distX - p2.distX, isCloser = p1.dist - p2.dist, isAbove = ((p2.series.group && p2.series.group.zIndex) -\n (p1.series.group && p1.series.group.zIndex));\n let result;\n // We have two points which are not in the same place on xAxis\n // and shared tooltip:\n if (isCloserX !== 0 && shared) { // #5721\n result = isCloserX;\n // Points are not exactly in the same place on x/yAxis:\n }\n else if (isCloser !== 0) {\n result = isCloser;\n // The same xAxis and yAxis position, sort by z-index:\n }\n else if (isAbove !== 0) {\n result = isAbove;\n // The same zIndex, sort by array index:\n }\n else {\n result =\n p1.series.index > p2.series.index ?\n -1 :\n 1;\n }\n return result;\n }\n series.forEach(function (s) {\n const noSharedTooltip = s.noSharedTooltip && shared, compareX = (!noSharedTooltip &&\n s.options.findNearestPointBy.indexOf('y') < 0), point = s.searchPoint(e, compareX);\n if ( // Check that we actually found a point on the series.\n isObject(point, true) && point.series &&\n // Use the new point if it is closer.\n (!isObject(closest, true) ||\n (sort(closest, point) > 0))) {\n closest = point;\n }\n });\n return closest;\n }\n /**\n * @private\n * @function Highcharts.Pointer#getChartCoordinatesFromPoint\n */\n getChartCoordinatesFromPoint(point, inverted) {\n const series = point.series, xAxis = series.xAxis, yAxis = series.yAxis, shapeArgs = point.shapeArgs;\n if (xAxis && yAxis) {\n let x = pick(point.clientX, point.plotX);\n let y = point.plotY || 0;\n if (point.isNode &&\n shapeArgs &&\n isNumber(shapeArgs.x) &&\n isNumber(shapeArgs.y)) {\n x = shapeArgs.x;\n y = shapeArgs.y;\n }\n return inverted ? {\n chartX: yAxis.len + yAxis.pos - y,\n chartY: xAxis.len + xAxis.pos - x\n } : {\n chartX: x + xAxis.pos,\n chartY: y + yAxis.pos\n };\n }\n if (shapeArgs && shapeArgs.x && shapeArgs.y) {\n // E.g. pies do not have axes\n return {\n chartX: shapeArgs.x,\n chartY: shapeArgs.y\n };\n }\n }\n /**\n * Return the cached chartPosition if it is available on the Pointer,\n * otherwise find it. Running offset is quite expensive, so it should be\n * avoided when we know the chart hasn't moved.\n *\n * @function Highcharts.Pointer#getChartPosition\n *\n * @return {Highcharts.ChartPositionObject}\n * The offset of the chart container within the page\n */\n getChartPosition() {\n if (this.chartPosition) {\n return this.chartPosition;\n }\n const { container } = this.chart;\n const pos = offset(container);\n this.chartPosition = {\n left: pos.left,\n top: pos.top,\n scaleX: 1,\n scaleY: 1\n };\n const offsetWidth = container.offsetWidth;\n const offsetHeight = container.offsetHeight;\n // #13342 - tooltip was not visible in Chrome, when chart\n // updates height.\n if (offsetWidth > 2 && // #13342\n offsetHeight > 2 // #13342\n ) {\n this.chartPosition.scaleX = pos.width / offsetWidth;\n this.chartPosition.scaleY = pos.height / offsetHeight;\n }\n return this.chartPosition;\n }\n /**\n * Get the click position in terms of axis values.\n *\n * @function Highcharts.Pointer#getCoordinates\n *\n * @param {Highcharts.PointerEventObject} e\n * Pointer event, extended with `chartX` and `chartY` properties.\n *\n * @return {Highcharts.PointerAxisCoordinatesObject}\n * Axis coordinates.\n */\n getCoordinates(e) {\n const coordinates = {\n xAxis: [],\n yAxis: []\n };\n this.chart.axes.forEach(function (axis) {\n coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({\n axis: axis,\n value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])\n });\n });\n return coordinates;\n }\n /**\n * Calculates what is the current hovered point/points and series.\n *\n * @private\n * @function Highcharts.Pointer#getHoverData\n *\n * @param {Highcharts.Point|undefined} existingHoverPoint\n * The point currently being hovered.\n *\n * @param {Highcharts.Series|undefined} existingHoverSeries\n * The series currently being hovered.\n *\n * @param {Array} series\n * All the series in the chart.\n *\n * @param {boolean} isDirectTouch\n * Is the pointer directly hovering the point.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The triggering event, containing chart coordinates of the pointer.\n *\n * @return {Object}\n * Object containing resulting hover data: hoverPoint, hoverSeries, and\n * hoverPoints.\n */\n getHoverData(existingHoverPoint, existingHoverSeries, series, isDirectTouch, shared, e) {\n const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {\n return (s.visible &&\n !(!shared && s.directTouch) && // #3821\n pick(s.options.enableMouseTracking, true));\n };\n let hoverSeries = existingHoverSeries, \n // Which series to look in for the hover point\n searchSeries, \n // Parameters needed for beforeGetHoverData event.\n eventArgs = {\n chartX: e ? e.chartX : void 0,\n chartY: e ? e.chartY : void 0,\n shared: shared\n };\n // Find chart.hoverPane and update filter method in polar.\n fireEvent(this, 'beforeGetHoverData', eventArgs);\n const notSticky = hoverSeries && !hoverSeries.stickyTracking;\n searchSeries = notSticky ?\n // Only search on hovered series if it has stickyTracking false\n [hoverSeries] :\n // Filter what series to look in.\n series.filter((s) => s.stickyTracking &&\n (eventArgs.filter || filter)(s));\n // Use existing hovered point or find the one closest to coordinates.\n const hoverPoint = useExisting || !e ?\n existingHoverPoint :\n this.findNearestKDPoint(searchSeries, shared, e);\n // Assign hover series\n hoverSeries = hoverPoint && hoverPoint.series;\n // If we have a hoverPoint, assign hoverPoints.\n if (hoverPoint) {\n // When tooltip is shared, it displays more than one point\n if (shared && !hoverSeries.noSharedTooltip) {\n searchSeries = series.filter(function (s) {\n return eventArgs.filter ?\n eventArgs.filter(s) : filter(s) && !s.noSharedTooltip;\n });\n // Get all points with the same x value as the hoverPoint\n searchSeries.forEach(function (s) {\n let point = find(s.points, function (p) {\n return p.x === hoverPoint.x && !p.isNull;\n });\n if (isObject(point)) {\n /*\n * Boost returns a minimal point. Convert it to a usable\n * point for tooltip and states.\n */\n if (s.boosted && s.boost) {\n point = s.boost.getPoint(point);\n }\n hoverPoints.push(point);\n }\n });\n }\n else {\n hoverPoints.push(hoverPoint);\n }\n }\n // Check whether the hoverPoint is inside pane we are hovering over.\n eventArgs = { hoverPoint: hoverPoint };\n fireEvent(this, 'afterGetHoverData', eventArgs);\n return {\n hoverPoint: eventArgs.hoverPoint,\n hoverSeries: hoverSeries,\n hoverPoints: hoverPoints\n };\n }\n /**\n * @private\n * @function Highcharts.Pointer#getPointFromEvent\n */\n getPointFromEvent(e) {\n let target = e.target, point;\n while (target && !point) {\n point = target.point;\n target = target.parentNode;\n }\n return point;\n }\n /**\n * @private\n * @function Highcharts.Pointer#onTrackerMouseOut\n */\n onTrackerMouseOut(e) {\n const chart = this.chart;\n const relatedTarget = e.relatedTarget;\n const series = chart.hoverSeries;\n this.isDirectTouch = false;\n if (series &&\n relatedTarget &&\n !series.stickyTracking &&\n !this.inClass(relatedTarget, 'highcharts-tooltip') &&\n (!this.inClass(relatedTarget, 'highcharts-series-' + series.index) || // #2499, #4465, #5553\n !this.inClass(relatedTarget, 'highcharts-tracker'))) {\n series.onMouseOut();\n }\n }\n /**\n * Utility to detect whether an element has, or has a parent with, a\n * specific class name. Used on detection of tracker objects and on deciding\n * whether hovering the tooltip should cause the active series to mouse out.\n *\n * @function Highcharts.Pointer#inClass\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The element to investigate.\n *\n * @param {string} className\n * The class name to look for.\n *\n * @return {boolean|undefined}\n * True if either the element or one of its parents has the given class\n * name.\n */\n inClass(element, className) {\n let elem = element, elemClassName;\n while (elem) {\n elemClassName = attr(elem, 'class');\n if (elemClassName) {\n if (elemClassName.indexOf(className) !== -1) {\n return true;\n }\n if (elemClassName.indexOf('highcharts-container') !== -1) {\n return false;\n }\n }\n elem = elem.parentElement;\n }\n }\n /**\n * Initialize the Pointer.\n *\n * @private\n * @function Highcharts.Pointer#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and\n * tooltip structures.\n */\n init(chart, options) {\n // Store references\n this.options = options;\n this.chart = chart;\n // Do we need to handle click on a touch device?\n this.runChartClick = Boolean(options.chart.events && options.chart.events.click);\n this.pinchDown = [];\n this.lastValidTouch = {};\n this.setDOMEvents();\n fireEvent(this, 'afterInit');\n }\n /**\n * Takes a browser event object and extends it with custom Highcharts\n * properties `chartX` and `chartY` in order to work on the internal\n * coordinate system.\n *\n * On map charts, the properties `lon` and `lat` are added to the event\n * object given that the chart has projection information.\n *\n * @function Highcharts.Pointer#normalize\n *\n * @param {global.MouseEvent|global.PointerEvent|global.TouchEvent} e\n * Event object in standard browsers.\n *\n * @param {Highcharts.OffsetObject} [chartPosition]\n * Additional chart offset.\n *\n * @return {Highcharts.PointerEventObject}\n * A browser event with extended properties `chartX` and `chartY`.\n */\n normalize(e, chartPosition) {\n const touches = e.touches;\n // iOS (#2757)\n const ePos = (touches ?\n touches.length ?\n touches.item(0) :\n (pick(// #13534\n touches.changedTouches, e.changedTouches))[0] :\n e);\n // Get mouse position\n if (!chartPosition) {\n chartPosition = this.getChartPosition();\n }\n let chartX = ePos.pageX - chartPosition.left, chartY = ePos.pageY - chartPosition.top;\n // #11329 - when there is scaling on a parent element, we need to take\n // this into account\n chartX /= chartPosition.scaleX;\n chartY /= chartPosition.scaleY;\n return extend(e, {\n chartX: Math.round(chartX),\n chartY: Math.round(chartY)\n });\n }\n /**\n * @private\n * @function Highcharts.Pointer#onContainerClick\n */\n onContainerClick(e) {\n const chart = this.chart;\n const hoverPoint = chart.hoverPoint;\n const pEvt = this.normalize(e);\n const plotLeft = chart.plotLeft;\n const plotTop = chart.plotTop;\n if (!chart.cancelClick) {\n // On tracker click, fire the series and point events. #783, #1583\n if (hoverPoint &&\n this.inClass(pEvt.target, 'highcharts-tracker')) {\n // the series click event\n fireEvent(hoverPoint.series, 'click', extend(pEvt, {\n point: hoverPoint\n }));\n // the point click event\n if (chart.hoverPoint) { // it may be destroyed (#1844)\n hoverPoint.firePointEvent('click', pEvt);\n }\n // When clicking outside a tracker, fire a chart event\n }\n else {\n extend(pEvt, this.getCoordinates(pEvt));\n // fire a click event in the chart\n if (chart.isInsidePlot(pEvt.chartX - plotLeft, pEvt.chartY - plotTop, {\n visiblePlotOnly: true\n })) {\n fireEvent(chart, 'click', pEvt);\n }\n }\n }\n }\n /**\n * @private\n * @function Highcharts.Pointer#onContainerMouseDown\n */\n onContainerMouseDown(e) {\n const isPrimaryButton = ((e.buttons || e.button) & 1) === 1;\n e = this.normalize(e);\n // #11635, Firefox does not reliably fire move event after click scroll\n if (H.isFirefox &&\n e.button !== 0) {\n this.onContainerMouseMove(e);\n }\n // #11635, limiting to primary button\n if (typeof e.button === 'undefined' ||\n isPrimaryButton) {\n this.zoomOption(e);\n // #295, #13737 solve conflict between container drag and chart zoom\n if (isPrimaryButton &&\n e.preventDefault) {\n e.preventDefault();\n }\n this.dragStart(e);\n }\n }\n /**\n * When mouse leaves the container, hide the tooltip.\n * @private\n * @function Highcharts.Pointer#onContainerMouseLeave\n */\n onContainerMouseLeave(e) {\n const chart = charts[pick(Pointer.hoverChartIndex, -1)];\n e = this.normalize(e);\n // #4886, MS Touch end fires mouseleave but with no related target\n if (chart &&\n e.relatedTarget &&\n !this.inClass(e.relatedTarget, 'highcharts-tooltip')) {\n chart.pointer.reset();\n // Also reset the chart position, used in #149 fix\n chart.pointer.chartPosition = void 0;\n }\n }\n /**\n * When mouse enters the container, delete pointer's chartPosition.\n * @private\n * @function Highcharts.Pointer#onContainerMouseEnter\n */\n onContainerMouseEnter(e) {\n delete this.chartPosition;\n }\n /**\n * The mousemove, touchmove and touchstart event handler\n * @private\n * @function Highcharts.Pointer#onContainerMouseMove\n */\n onContainerMouseMove(e) {\n const chart = this.chart, tooltip = chart.tooltip, pEvt = this.normalize(e);\n this.setHoverChartIndex();\n if (chart.mouseIsDown === 'mousedown' || this.touchSelect(pEvt)) {\n this.drag(pEvt);\n }\n // Show the tooltip and run mouse over events (#977)\n if (!chart.openMenu &&\n (this.inClass(pEvt.target, 'highcharts-tracker') ||\n chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n })) &&\n // If the tooltip has stickOnContact enabled, do nothing. This\n // applies regardless of any combinations of the `split` and\n // `useHTML` options.\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt))) {\n if (this.inClass(pEvt.target, 'highcharts-no-tooltip')) {\n this.reset(false, 0);\n }\n else {\n this.runPointActions(pEvt);\n }\n }\n }\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentTouchEnd\n */\n onDocumentTouchEnd(e) {\n const hoverChart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart) {\n hoverChart.pointer.drop(e);\n }\n }\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchMove\n */\n onContainerTouchMove(e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseMove(e);\n }\n else {\n this.touch(e);\n }\n }\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchStart\n */\n onContainerTouchStart(e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseDown(e);\n }\n else {\n this.zoomOption(e);\n this.touch(e, true);\n }\n }\n /**\n * Special handler for mouse move that will hide the tooltip when the mouse\n * leaves the plotarea. Issue #149 workaround. The mouseleave event does not\n * always fire.\n * @private\n * @function Highcharts.Pointer#onDocumentMouseMove\n */\n onDocumentMouseMove(e) {\n const chart = this.chart;\n const tooltip = chart.tooltip;\n const chartPosition = this.chartPosition;\n const pEvt = this.normalize(e, chartPosition);\n // If we're outside, hide the tooltip\n if (chartPosition &&\n !chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n }) &&\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt)) &&\n !this.inClass(pEvt.target, 'highcharts-tracker')) {\n this.reset();\n }\n }\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentMouseUp\n */\n onDocumentMouseUp(e) {\n const chart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (chart) {\n chart.pointer.drop(e);\n }\n }\n /**\n * Handle touch events with two touches\n * @private\n * @function Highcharts.Pointer#pinch\n */\n pinch(e) {\n const self = this, chart = self.chart, pinchDown = self.pinchDown, touches = (e.touches || []), touchesLength = touches.length, lastValidTouch = self.lastValidTouch, hasZoom = self.hasZoom, transform = {}, fireClickEvent = touchesLength === 1 && ((self.inClass(e.target, 'highcharts-tracker') &&\n chart.runTrackerClick) ||\n self.runChartClick), clip = {}, tooltip = self.chart.tooltip, followTouchMove = touchesLength === 1 &&\n pick((tooltip && tooltip.options.followTouchMove), true);\n let selectionMarker = self.selectionMarker;\n // Don't initiate panning until the user has pinched. This prevents us\n // from blocking page scrolling as users scroll down a long page\n // (#4210).\n if (touchesLength > 1) {\n self.initiated = true;\n }\n else if (followTouchMove) {\n // #16119: Prevent blocking scroll when single-finger panning is\n // not enabled\n self.initiated = false;\n }\n // On touch devices, only proceed to trigger click if a handler is\n // defined\n if (hasZoom &&\n self.initiated &&\n !fireClickEvent &&\n e.cancelable !== false) {\n e.preventDefault();\n }\n // Normalize each touch\n [].map.call(touches, function (e) {\n return self.normalize(e);\n });\n // Register the touch start position\n if (e.type === 'touchstart') {\n [].forEach.call(touches, function (e, i) {\n pinchDown[i] = { chartX: e.chartX, chartY: e.chartY };\n });\n lastValidTouch.x = [pinchDown[0].chartX, pinchDown[1] &&\n pinchDown[1].chartX];\n lastValidTouch.y = [pinchDown[0].chartY, pinchDown[1] &&\n pinchDown[1].chartY];\n // Identify the data bounds in pixels\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled) {\n const bounds = chart.bounds[axis.horiz ? 'h' : 'v'], minPixelPadding = axis.minPixelPadding, min = axis.toPixels(Math.min(pick(axis.options.min, axis.dataMin), axis.dataMin)), max = axis.toPixels(Math.max(pick(axis.options.max, axis.dataMax), axis.dataMax)), absMin = Math.min(min, max), absMax = Math.max(min, max);\n // Store the bounds for use in the touchmove handler\n bounds.min = Math.min(axis.pos, absMin - minPixelPadding);\n bounds.max = Math.max(axis.pos + axis.len, absMax + minPixelPadding);\n }\n });\n self.res = true; // reset on next move\n // Optionally move the tooltip on touchmove\n }\n else if (followTouchMove) {\n this.runPointActions(self.normalize(e));\n // Event type is touchmove, handle panning and pinching\n }\n else if (pinchDown.length) { // can be 0 when releasing, if touchend\n // fires first\n fireEvent(chart, 'touchpan', { originalEvent: e }, () => {\n // Set the marker\n if (!selectionMarker) {\n // @todo It's a mock object, so maybe we need a separate\n // interface\n self.selectionMarker = selectionMarker = extend({\n destroy: noop,\n touch: true\n }, chart.plotBox);\n }\n self.pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n self.hasPinched = hasZoom;\n // Scale and translate the groups to provide visual feedback\n // during pinching\n self.scaleGroups(transform, clip);\n });\n if (self.res) {\n self.res = false;\n this.reset(false, 0);\n }\n }\n }\n /**\n * Run translation operations\n * @private\n * @function Highcharts.Pointer#pinchTranslate\n */\n pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {\n if (this.zoomHor) {\n this.pinchTranslateDirection(true, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n if (this.zoomVert) {\n this.pinchTranslateDirection(false, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n }\n /**\n * Run translation operations for each direction (horizontal and vertical)\n * independently.\n * @private\n * @function Highcharts.Pointer#pinchTranslateDirection\n */\n pinchTranslateDirection(horiz, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch, forcedScale) {\n const chart = this.chart, xy = horiz ? 'x' : 'y', XY = horiz ? 'X' : 'Y', sChartXY = ('chart' + XY), wh = horiz ? 'width' : 'height', plotLeftTop = chart['plot' + (horiz ? 'Left' : 'Top')], inverted = chart.inverted, bounds = chart.bounds[horiz ? 'h' : 'v'], singleTouch = pinchDown.length === 1, touch0Start = pinchDown[0][sChartXY], touch1Start = !singleTouch && pinchDown[1][sChartXY], setScale = function () {\n // Don't zoom if fingers are too close on this axis\n if (typeof touch1Now === 'number' &&\n Math.abs(touch0Start - touch1Start) > 20) {\n scale = forcedScale ||\n Math.abs(touch0Now - touch1Now) /\n Math.abs(touch0Start - touch1Start);\n }\n clipXY = ((plotLeftTop - touch0Now) / scale) + touch0Start;\n selectionWH = chart['plot' + (horiz ? 'Width' : 'Height')] / scale;\n };\n let selectionWH, selectionXY, clipXY, scale = forcedScale || 1, touch0Now = touches[0][sChartXY], touch1Now = !singleTouch && touches[1][sChartXY], outOfBounds;\n // Set the scale, first pass\n setScale();\n // The clip position (x or y) is altered if out of bounds, the selection\n // position is not\n selectionXY = clipXY;\n // Out of bounds\n if (selectionXY < bounds.min) {\n selectionXY = bounds.min;\n outOfBounds = true;\n }\n else if (selectionXY + selectionWH > bounds.max) {\n selectionXY = bounds.max - selectionWH;\n outOfBounds = true;\n }\n // Is the chart dragged off its bounds, determined by dataMin and\n // dataMax?\n if (outOfBounds) {\n // Modify the touchNow position in order to create an elastic drag\n // movement. This indicates to the user that the chart is responsive\n // but can't be dragged further.\n touch0Now -= 0.8 * (touch0Now - lastValidTouch[xy][0]);\n if (typeof touch1Now === 'number') {\n touch1Now -= 0.8 * (touch1Now - lastValidTouch[xy][1]);\n }\n // Set the scale, second pass to adapt to the modified touchNow\n // positions\n setScale();\n }\n else {\n lastValidTouch[xy] = [touch0Now, touch1Now];\n }\n // Set geometry for clipping, selection and transformation\n if (!inverted) {\n clip[xy] = clipXY - plotLeftTop;\n clip[wh] = selectionWH;\n }\n const scaleKey = inverted ?\n (horiz ? 'scaleY' : 'scaleX') : 'scale' + XY;\n const transformScale = inverted ? 1 / scale : scale;\n selectionMarker[wh] = selectionWH;\n selectionMarker[xy] = selectionXY;\n transform[scaleKey] = scale;\n transform['translate' + XY] = (transformScale * plotLeftTop) +\n (touch0Now - (transformScale * touch0Start));\n }\n /**\n * Reset the tracking by hiding the tooltip, the hover series state and the\n * hover point\n *\n * @function Highcharts.Pointer#reset\n *\n * @param {boolean} [allowMove]\n * Instead of destroying the tooltip altogether, allow moving it if\n * possible.\n *\n * @param {number} [delay]\n */\n reset(allowMove, delay) {\n const pointer = this, chart = pointer.chart, hoverSeries = chart.hoverSeries, hoverPoint = chart.hoverPoint, hoverPoints = chart.hoverPoints, tooltip = chart.tooltip, tooltipPoints = tooltip && tooltip.shared ?\n hoverPoints :\n hoverPoint;\n // Check if the points have moved outside the plot area (#1003, #4736,\n // #5101)\n if (allowMove && tooltipPoints) {\n splat(tooltipPoints).forEach(function (point) {\n if (point.series.isCartesian &&\n typeof point.plotX === 'undefined') {\n allowMove = false;\n }\n });\n }\n // Just move the tooltip, #349\n if (allowMove) {\n if (tooltip && tooltipPoints && splat(tooltipPoints).length) {\n tooltip.refresh(tooltipPoints);\n if (tooltip.shared && hoverPoints) { // #8284\n hoverPoints.forEach(function (point) {\n point.setState(point.state, true);\n if (point.series.isCartesian) {\n if (point.series.xAxis.crosshair) {\n point.series.xAxis\n .drawCrosshair(null, point);\n }\n if (point.series.yAxis.crosshair) {\n point.series.yAxis\n .drawCrosshair(null, point);\n }\n }\n });\n }\n else if (hoverPoint) { // #2500\n hoverPoint.setState(hoverPoint.state, true);\n chart.axes.forEach(function (axis) {\n if (axis.crosshair &&\n hoverPoint.series[axis.coll] === axis) {\n axis.drawCrosshair(null, hoverPoint);\n }\n });\n }\n }\n // Full reset\n }\n else {\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n if (hoverSeries) {\n hoverSeries.onMouseOut();\n }\n if (tooltip) {\n tooltip.hide(delay);\n }\n if (pointer.unDocMouseMove) {\n pointer.unDocMouseMove = pointer.unDocMouseMove();\n }\n // Remove crosshairs\n chart.axes.forEach(function (axis) {\n axis.hideCrosshair();\n });\n pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;\n }\n }\n /**\n * With line type charts with a single tracker, get the point closest to the\n * mouse. Run Point.onMouseOver and display tooltip for the point or points.\n *\n * @private\n * @function Highcharts.Pointer#runPointActions\n *\n * @emits Highcharts.Point#event:mouseOut\n * @emits Highcharts.Point#event:mouseOver\n */\n runPointActions(e, p, force) {\n const pointer = this, chart = pointer.chart, series = chart.series, tooltip = (chart.tooltip && chart.tooltip.options.enabled ?\n chart.tooltip :\n void 0), shared = (tooltip ?\n tooltip.shared :\n false);\n let hoverPoint = p || chart.hoverPoint, hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries;\n const // onMouseOver or already hovering a series with directTouch\n isDirectTouch = (!e || e.type !== 'touchmove') && (!!p || ((hoverSeries && hoverSeries.directTouch) &&\n pointer.isDirectTouch)), hoverData = this.getHoverData(hoverPoint, hoverSeries, series, isDirectTouch, shared, e);\n // Update variables from hoverData.\n hoverPoint = hoverData.hoverPoint;\n hoverSeries = hoverData.hoverSeries;\n const points = hoverData.hoverPoints, followPointer = hoverSeries &&\n hoverSeries.tooltipOptions.followPointer &&\n !hoverSeries.tooltipOptions.split, useSharedTooltip = (shared &&\n hoverSeries &&\n !hoverSeries.noSharedTooltip);\n // Refresh tooltip for kdpoint if new hover point or tooltip was hidden\n // #3926, #4200\n if (hoverPoint &&\n (force ||\n hoverPoint !== chart.hoverPoint ||\n (tooltip && tooltip.isHidden))) {\n (chart.hoverPoints || []).forEach(function (p) {\n if (points.indexOf(p) === -1) {\n p.setState();\n }\n });\n // Set normal state to previous series\n if (chart.hoverSeries !== hoverSeries) {\n hoverSeries.onMouseOver();\n }\n pointer.applyInactiveState(points);\n // Do mouseover on all points (#3919, #3985, #4410, #5622)\n (points || []).forEach(function (p) {\n p.setState('hover');\n });\n // If tracking is on series in stead of on each point,\n // fire mouseOver on hover point. // #4448\n if (chart.hoverPoint) {\n chart.hoverPoint.firePointEvent('mouseOut');\n }\n // Hover point may have been destroyed in the event handlers (#7127)\n if (!hoverPoint.series) {\n return;\n }\n /**\n * Contains all hovered points.\n *\n * @name Highcharts.Chart#hoverPoints\n * @type {Array|null}\n */\n chart.hoverPoints = points;\n /**\n * Contains the original hovered point.\n *\n * @name Highcharts.Chart#hoverPoint\n * @type {Highcharts.Point|null}\n */\n chart.hoverPoint = hoverPoint;\n /**\n * Hover state should not be lost when axis is updated (#12569)\n * Axis.update runs pointer.reset which uses chart.hoverPoint.state\n * to apply state which does not exist in hoverPoint yet.\n * The mouseOver event should be triggered when hoverPoint\n * is correct.\n */\n hoverPoint.firePointEvent('mouseOver', void 0, () => {\n // Draw tooltip if necessary\n if (tooltip && hoverPoint) {\n tooltip.refresh(useSharedTooltip ? points : hoverPoint, e);\n }\n });\n // Update positions (regardless of kdpoint or hoverPoint)\n }\n else if (followPointer && tooltip && !tooltip.isHidden) {\n const anchor = tooltip.getAnchor([{}], e);\n if (chart.isInsidePlot(anchor[0], anchor[1], {\n visiblePlotOnly: true\n })) {\n tooltip.updatePosition({ plotX: anchor[0], plotY: anchor[1] });\n }\n }\n // Start the event listener to pick up the tooltip and crosshairs\n if (!pointer.unDocMouseMove) {\n pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {\n const chart = charts[Pointer.hoverChartIndex];\n if (chart) {\n chart.pointer.onDocumentMouseMove(e);\n }\n });\n pointer.eventsToUnbind.push(pointer.unDocMouseMove);\n }\n // Issues related to crosshair #4927, #5269 #5066, #5658\n chart.axes.forEach(function drawAxisCrosshair(axis) {\n const snap = pick((axis.crosshair || {}).snap, true);\n let point;\n if (snap) {\n point = chart.hoverPoint; // #13002\n if (!point || point.series[axis.coll] !== axis) {\n point = find(points, (p) => p.series && p.series[axis.coll] === axis);\n }\n }\n // Axis has snapping crosshairs, and one of the hover points belongs\n // to axis. Always call drawCrosshair when it is not snap.\n if (point || !snap) {\n axis.drawCrosshair(e, point);\n // Axis has snapping crosshairs, but no hover point belongs to axis\n }\n else {\n axis.hideCrosshair();\n }\n });\n }\n /**\n * Scale series groups to a certain scale and translation.\n * @private\n * @function Highcharts.Pointer#scaleGroups\n */\n scaleGroups(attribs, clip) {\n const chart = this.chart;\n // Scale each series\n chart.series.forEach(function (series) {\n const seriesAttribs = attribs || series.getPlotBox(); // #1701\n if (series.group &&\n ((series.xAxis && series.xAxis.zoomEnabled) ||\n chart.mapView)) {\n series.group.attr(seriesAttribs);\n if (series.markerGroup) {\n series.markerGroup.attr(seriesAttribs);\n series.markerGroup.clip(clip ? chart.clipRect : null);\n }\n if (series.dataLabelsGroup) {\n series.dataLabelsGroup.attr(seriesAttribs);\n }\n }\n });\n // Clip\n chart.clipRect.attr(clip || chart.clipBox);\n }\n /**\n * Set the JS DOM events on the container and document. This method should\n * contain a one-to-one assignment between methods and their handlers. Any\n * advanced logic should be moved to the handler reflecting the event's\n * name.\n * @private\n * @function Highcharts.Pointer#setDOMEvents\n */\n setDOMEvents() {\n const container = this.chart.container, ownerDoc = container.ownerDocument;\n container.onmousedown = this.onContainerMouseDown.bind(this);\n container.onmousemove = this.onContainerMouseMove.bind(this);\n container.onclick = this.onContainerClick.bind(this);\n this.eventsToUnbind.push(addEvent(container, 'mouseenter', this.onContainerMouseEnter.bind(this)));\n this.eventsToUnbind.push(addEvent(container, 'mouseleave', this.onContainerMouseLeave.bind(this)));\n if (!Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', this.onDocumentMouseUp.bind(this));\n }\n // In case we are dealing with overflow, reset the chart position when\n // scrolling parent elements\n let parent = this.chart.renderTo.parentElement;\n while (parent && parent.tagName !== 'BODY') {\n this.eventsToUnbind.push(addEvent(parent, 'scroll', () => {\n delete this.chartPosition;\n }));\n parent = parent.parentElement;\n }\n if (H.hasTouch) {\n this.eventsToUnbind.push(addEvent(container, 'touchstart', this.onContainerTouchStart.bind(this), { passive: false }));\n this.eventsToUnbind.push(addEvent(container, 'touchmove', this.onContainerTouchMove.bind(this), { passive: false }));\n if (!Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', this.onDocumentTouchEnd.bind(this), { passive: false });\n }\n }\n }\n /**\n * Sets the index of the hovered chart and leaves the previous hovered\n * chart, to reset states like tooltip.\n * @private\n * @function Highcharts.Pointer#setHoverChartIndex\n */\n setHoverChartIndex() {\n const chart = this.chart;\n const hoverChart = H.charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart &&\n hoverChart !== chart) {\n hoverChart.pointer.onContainerMouseLeave({ relatedTarget: chart.container });\n }\n if (!hoverChart ||\n !hoverChart.mouseIsDown) {\n Pointer.hoverChartIndex = chart.index;\n }\n }\n /**\n * General touch handler shared by touchstart and touchmove.\n * @private\n * @function Highcharts.Pointer#touch\n */\n touch(e, start) {\n const chart = this.chart;\n let hasMoved, pinchDown, isInside;\n this.setHoverChartIndex();\n if (e.touches.length === 1) {\n e = this.normalize(e);\n isInside = chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop, {\n visiblePlotOnly: true\n });\n if (isInside && !chart.openMenu) {\n // Run mouse events and display tooltip etc\n if (start) {\n this.runPointActions(e);\n }\n // Android fires touchmove events after the touchstart even if\n // the finger hasn't moved, or moved only a pixel or two. In iOS\n // however, the touchmove doesn't fire unless the finger moves\n // more than ~4px. So we emulate this behaviour in Android by\n // checking how much it moved, and cancelling on small\n // distances. #3450.\n if (e.type === 'touchmove') {\n pinchDown = this.pinchDown;\n hasMoved = pinchDown[0] ? Math.sqrt(// #5266\n Math.pow(pinchDown[0].chartX - e.chartX, 2) +\n Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 4 : false;\n }\n if (pick(hasMoved, true)) {\n this.pinch(e);\n }\n }\n else if (start) {\n // Hide the tooltip on touching outside the plot area (#1203)\n this.reset();\n }\n }\n else if (e.touches.length === 2) {\n this.pinch(e);\n }\n }\n /**\n * Returns true if the chart is set up for zooming by single touch and the\n * event is capable\n * @private\n * @function Highcharts.Pointer#touchSelect\n */\n touchSelect(e) {\n return Boolean(this.chart.options.chart.zooming.singleTouch &&\n e.touches &&\n e.touches.length === 1);\n }\n /**\n * Resolve the zoomType option, this is reset on all touch start and mouse\n * down events.\n * @private\n * @function Highcharts.Pointer#zoomOption\n */\n zoomOption(e) {\n const chart = this.chart, options = chart.options.chart, inverted = chart.inverted;\n let zoomType = options.zooming.type || '', zoomX, zoomY;\n // Look for the pinchType option\n if (/touch/.test(e.type)) {\n zoomType = pick(options.zooming.pinchType, zoomType);\n }\n this.zoomX = zoomX = /x/.test(zoomType);\n this.zoomY = zoomY = /y/.test(zoomType);\n this.zoomHor = (zoomX && !inverted) || (zoomY && inverted);\n this.zoomVert = (zoomY && !inverted) || (zoomX && inverted);\n this.hasZoom = zoomX || zoomY;\n }\n }\n /* *\n *\n * Class Namespace\n *\n * */\n (function (Pointer) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedEvents = [];\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (U.pushUnique(composedMembers, ChartClass)) {\n addEvent(ChartClass, 'beforeRender', function () {\n /**\n * The Pointer that keeps track of mouse and touch\n * interaction.\n *\n * @memberof Highcharts.Chart\n * @name pointer\n * @type {Highcharts.Pointer}\n * @instance\n */\n this.pointer = new Pointer(this, this.options);\n });\n }\n }\n Pointer.compose = compose;\n /**\n * @private\n */\n function dissolve() {\n for (let i = 0, iEnd = composedEvents.length; i < iEnd; ++i) {\n composedEvents[i]();\n }\n composedEvents.length = 0;\n }\n Pointer.dissolve = dissolve;\n })(Pointer || (Pointer = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Chart position and scale.\n *\n * @interface Highcharts.ChartPositionObject\n */ /**\n * @name Highcharts.ChartPositionObject#left\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#top\n * @type {number}\n */\n /**\n * One position in relation to an axis.\n *\n * @interface Highcharts.PointerAxisCoordinateObject\n */ /**\n * Related axis.\n *\n * @name Highcharts.PointerAxisCoordinateObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value.\n *\n * @name Highcharts.PointerAxisCoordinateObject#value\n * @type {number}\n */\n /**\n * Positions in terms of axis values.\n *\n * @interface Highcharts.PointerAxisCoordinatesObject\n */ /**\n * Positions on the x-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#xAxis\n * @type {Array}\n */ /**\n * Positions on the y-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#yAxis\n * @type {Array}\n */\n /**\n * Pointer coordinates.\n *\n * @interface Highcharts.PointerCoordinatesObject\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartX\n * @type {number}\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartY\n * @type {number}\n */\n /**\n * A native browser mouse or touch event, extended with position information\n * relative to the {@link Chart.container}.\n *\n * @interface Highcharts.PointerEventObject\n * @extends global.PointerEvent\n */ /**\n * The X coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartX\n * @type {number}\n */ /**\n * The Y coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartY\n * @type {number}\n */\n /**\n * Axis-specific data of a selection.\n *\n * @interface Highcharts.SelectDataObject\n */ /**\n * The selected Axis.\n * @name Highcharts.SelectDataObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The maximum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#min\n * @type {number}\n */\n /**\n * Object for select events.\n * The primary axes are `xAxis[0]` and `yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.SelectEventObject\n */ /**\n * The related browser event.\n * @name Highcharts.SelectEventObject#originalEvent\n * @type {global.Event}\n */ /**\n * Indicates a reset event to restore default state.\n * @name Highcharts.SelectEventObject#resetSelection\n * @type {boolean|undefined}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#xAxis\n * @type {Array}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#yAxis\n * @type {Array}\n */\n ''; // keeps doclets above in JS file\n\n return Pointer;\n });\n _registerModule(_modules, 'Core/Legend/Legend.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Series/Point.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Utilities.js']], function (A, F, H, Point, R, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { animObject, setAnimation } = A;\n const { format } = F;\n const { marginNames } = H;\n const { distribute } = R;\n const { addEvent, createElement, css, defined, discardElement, find, fireEvent, isNumber, merge, pick, relativeLength, stableSort, syncTimeout } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * The overview of the chart's series. The legend object is instanciated\n * internally in the chart constructor, and is available from the `chart.legend`\n * property. Each chart has only one legend.\n *\n * @class\n * @name Highcharts.Legend\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n class Legend {\n /* *\n *\n * Constructors\n *\n * */\n constructor(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allItems = [];\n this.box = void 0;\n this.contentGroup = void 0;\n this.display = false;\n this.group = void 0;\n this.initialItemY = 0;\n this.itemHeight = 0;\n this.itemMarginBottom = 0;\n this.itemMarginTop = 0;\n this.itemX = 0;\n this.itemY = 0;\n this.lastItemY = 0;\n this.lastLineHeight = 0;\n this.legendHeight = 0;\n this.legendWidth = 0;\n this.maxItemWidth = 0;\n this.maxLegendWidth = 0;\n this.offsetWidth = 0;\n this.options = void 0;\n this.padding = 0;\n this.pages = [];\n this.proximate = false;\n this.scrollGroup = void 0;\n this.symbolHeight = 0;\n this.symbolWidth = 0;\n this.titleHeight = 0;\n this.totalItemWidth = 0;\n this.widthOption = 0;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the legend.\n *\n * @private\n * @function Highcharts.Legend#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n init(chart, options) {\n /**\n * Chart of this legend.\n *\n * @readonly\n * @name Highcharts.Legend#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n this.setOptions(options);\n if (options.enabled) {\n // Render it\n this.render();\n // move checkboxes\n addEvent(this.chart, 'endResize', function () {\n this.legend.positionCheckboxes();\n });\n // On Legend.init and Legend.update, make sure that proximate layout\n // events are either added or removed (#18362).\n addEvent(this.chart, 'render', () => {\n if (this.proximate) {\n this.proximatePositions();\n this.positionItems();\n }\n });\n }\n }\n /**\n * @private\n * @function Highcharts.Legend#setOptions\n * @param {Highcharts.LegendOptions} options\n */\n setOptions(options) {\n const padding = pick(options.padding, 8);\n /**\n * Legend options.\n *\n * @readonly\n * @name Highcharts.Legend#options\n * @type {Highcharts.LegendOptions}\n */\n this.options = options;\n if (!this.chart.styledMode) {\n this.itemStyle = options.itemStyle;\n this.itemHiddenStyle = merge(this.itemStyle, options.itemHiddenStyle);\n }\n this.itemMarginTop = options.itemMarginTop;\n this.itemMarginBottom = options.itemMarginBottom;\n this.padding = padding;\n this.initialItemY = padding - 5; // 5 is pixels above the text\n this.symbolWidth = pick(options.symbolWidth, 16);\n this.pages = [];\n this.proximate = options.layout === 'proximate' && !this.chart.inverted;\n // #12705: baseline has to be reset on every update\n this.baseline = void 0;\n }\n /**\n * Update the legend with new options. Equivalent to running `chart.update`\n * with a legend configuration option.\n *\n * @sample highcharts/legend/legend-update/\n * Legend update\n *\n * @function Highcharts.Legend#update\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after. Whether to redraw the chart.\n *\n * @emits Highcharts.Legends#event:afterUpdate\n */\n update(options, redraw) {\n const chart = this.chart;\n this.setOptions(merge(true, this.options, options));\n this.destroy();\n chart.isDirtyLegend = chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n fireEvent(this, 'afterUpdate');\n }\n /**\n * Set the colors for the legend item.\n *\n * @private\n * @function Highcharts.Legend#colorizeItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * A Series or Point instance\n * @param {boolean} [visible=false]\n * Dimmed or colored\n *\n * @todo\n * Make events official: Fires the event `afterColorizeItem`.\n */\n colorizeItem(item, visible) {\n const { group, label, line, symbol } = item.legendItem || {};\n if (group) {\n group[visible ? 'removeClass' : 'addClass']('highcharts-legend-item-hidden');\n }\n if (!this.chart.styledMode) {\n const legend = this, options = legend.options, hiddenColor = legend.itemHiddenStyle.color, textColor = visible ?\n options.itemStyle.color :\n hiddenColor, symbolColor = visible ?\n (item.color || hiddenColor) :\n hiddenColor, markerOptions = item.options && item.options.marker;\n let symbolAttr = { fill: symbolColor };\n if (label) {\n label.css({\n fill: textColor\n });\n }\n if (line) {\n line.attr({ stroke: symbolColor });\n }\n if (symbol) {\n // Apply marker options\n if (markerOptions && symbol.isMarker) { // #585\n symbolAttr = item.pointAttribs();\n if (!visible) {\n // #6769\n symbolAttr.stroke = symbolAttr.fill = hiddenColor;\n }\n }\n symbol.attr(symbolAttr);\n }\n }\n fireEvent(this, 'afterColorizeItem', { item, visible });\n }\n /**\n * @private\n * @function Highcharts.Legend#positionItems\n */\n positionItems() {\n // Now that the legend width and height are established, put the items\n // in the final position\n this.allItems.forEach(this.positionItem, this);\n if (!this.chart.isResizing) {\n this.positionCheckboxes();\n }\n }\n /**\n * Position the legend item.\n *\n * @private\n * @function Highcharts.Legend#positionItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to position\n */\n positionItem(item) {\n const legend = this, { group, x = 0, y = 0 } = item.legendItem || {}, options = legend.options, symbolPadding = options.symbolPadding, ltr = !options.rtl, checkbox = item.checkbox;\n if (group && group.element) {\n const attribs = {\n translateX: ltr ?\n x :\n legend.legendWidth - x - 2 * symbolPadding - 4,\n translateY: y\n };\n const complete = () => {\n fireEvent(this, 'afterPositionItem', { item });\n };\n group[defined(group.translateY) ? 'animate' : 'attr'](attribs, void 0, complete);\n }\n if (checkbox) {\n checkbox.x = x;\n checkbox.y = y;\n }\n }\n /**\n * Destroy a single legend item, used internally on removing series items.\n *\n * @private\n * @function Highcharts.Legend#destroyItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to remove\n */\n destroyItem(item) {\n const checkbox = item.checkbox, legendItem = item.legendItem || {};\n // destroy SVG elements\n for (const key of ['group', 'label', 'line', 'symbol']) {\n if (legendItem[key]) {\n legendItem[key] = legendItem[key].destroy();\n }\n }\n if (checkbox) {\n discardElement(checkbox);\n }\n item.legendItem = void 0;\n }\n /**\n * Destroy the legend. Used internally. To reflow objects, `chart.redraw`\n * must be called after destruction.\n *\n * @private\n * @function Highcharts.Legend#destroy\n */\n destroy() {\n const legend = this;\n // Destroy items\n for (const item of this.getAllItems()) {\n this.destroyItem(item);\n }\n // Destroy legend elements\n for (const key of [\n 'clipRect',\n 'up',\n 'down',\n 'pager',\n 'nav',\n 'box',\n 'title',\n 'group'\n ]) {\n if (legend[key]) {\n legend[key] = legend[key].destroy();\n }\n }\n this.display = null; // Reset in .render on update.\n }\n /**\n * Position the checkboxes after the width is determined.\n *\n * @private\n * @function Highcharts.Legend#positionCheckboxes\n */\n positionCheckboxes() {\n const alignAttr = this.group && this.group.alignAttr, clipHeight = this.clipHeight || this.legendHeight, titleHeight = this.titleHeight;\n let translateY;\n if (alignAttr) {\n translateY = alignAttr.translateY;\n this.allItems.forEach(function (item) {\n const checkbox = item.checkbox;\n let top;\n if (checkbox) {\n top = translateY + titleHeight + checkbox.y +\n (this.scrollOffset || 0) + 3;\n css(checkbox, {\n left: (alignAttr.translateX + item.checkboxOffset +\n checkbox.x - 20) + 'px',\n top: top + 'px',\n display: this.proximate || (top > translateY - 6 &&\n top < translateY + clipHeight - 6) ?\n '' :\n 'none'\n });\n }\n }, this);\n }\n }\n /**\n * Render the legend title on top of the legend.\n *\n * @private\n * @function Highcharts.Legend#renderTitle\n */\n renderTitle() {\n const options = this.options, padding = this.padding, titleOptions = options.title;\n let bBox, titleHeight = 0;\n if (titleOptions.text) {\n if (!this.title) {\n /**\n * SVG element of the legend title.\n *\n * @readonly\n * @name Highcharts.Legend#title\n * @type {Highcharts.SVGElement}\n */\n this.title = this.chart.renderer.label(titleOptions.text, padding - 3, padding - 4, void 0, void 0, void 0, options.useHTML, void 0, 'legend-title')\n .attr({ zIndex: 1 });\n if (!this.chart.styledMode) {\n this.title.css(titleOptions.style);\n }\n this.title.add(this.group);\n }\n // Set the max title width (#7253)\n if (!titleOptions.width) {\n this.title.css({\n width: this.maxLegendWidth + 'px'\n });\n }\n bBox = this.title.getBBox();\n titleHeight = bBox.height;\n this.offsetWidth = bBox.width; // #1717\n this.contentGroup.attr({ translateY: titleHeight });\n }\n this.titleHeight = titleHeight;\n }\n /**\n * Set the legend item text.\n *\n * @function Highcharts.Legend#setText\n * @param {Highcharts.Point|Highcharts.Series} item\n * The item for which to update the text in the legend.\n */\n setText(item) {\n const options = this.options;\n item.legendItem.label.attr({\n text: options.labelFormat ?\n format(options.labelFormat, item, this.chart) :\n options.labelFormatter.call(item)\n });\n }\n /**\n * Render a single specific legend item. Called internally from the `render`\n * function.\n *\n * @private\n * @function Highcharts.Legend#renderItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to render.\n */\n renderItem(item) {\n const legend = this, legendItem = item.legendItem = item.legendItem || {}, chart = legend.chart, renderer = chart.renderer, options = legend.options, horizontal = options.layout === 'horizontal', symbolWidth = legend.symbolWidth, symbolPadding = options.symbolPadding || 0, itemStyle = legend.itemStyle, itemHiddenStyle = legend.itemHiddenStyle, itemDistance = horizontal ? pick(options.itemDistance, 20) : 0, ltr = !options.rtl, isSeries = !item.series, series = !isSeries && item.series.drawLegendSymbol ?\n item.series :\n item, seriesOptions = series.options, showCheckbox = (legend.createCheckboxForItem) &&\n seriesOptions &&\n seriesOptions.showCheckbox, useHTML = options.useHTML, itemClassName = item.options.className;\n let label = legendItem.label, \n // full width minus text width\n itemExtraWidth = symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (!label) { // generate it once, later move it\n // Generate the group box, a group to hold the symbol and text. Text\n // is to be appended in Legend class.\n legendItem.group = renderer\n .g('legend-item')\n .addClass('highcharts-' + series.type + '-series ' +\n 'highcharts-color-' + item.colorIndex +\n (itemClassName ? ' ' + itemClassName : '') +\n (isSeries ?\n ' highcharts-series-' + item.index :\n ''))\n .attr({ zIndex: 1 })\n .add(legend.scrollGroup);\n // Generate the list item text and add it to the group\n legendItem.label = label = renderer.text('', ltr ?\n symbolWidth + symbolPadding :\n -symbolPadding, legend.baseline || 0, useHTML);\n if (!chart.styledMode) {\n // merge to prevent modifying original (#1021)\n label.css(merge(item.visible ?\n itemStyle :\n itemHiddenStyle));\n }\n label\n .attr({\n align: ltr ? 'left' : 'right',\n zIndex: 2\n })\n .add(legendItem.group);\n // Get the baseline for the first item - the font size is equal for\n // all\n if (!legend.baseline) {\n legend.fontMetrics = renderer.fontMetrics(label);\n legend.baseline =\n legend.fontMetrics.f + 3 + legend.itemMarginTop;\n label.attr('y', legend.baseline);\n legend.symbolHeight =\n pick(options.symbolHeight, legend.fontMetrics.f);\n if (options.squareSymbol) {\n legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));\n itemExtraWidth = legend.symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (ltr) {\n label.attr('x', legend.symbolWidth + symbolPadding);\n }\n }\n }\n // Draw the legend symbol inside the group box\n series.drawLegendSymbol(legend, item);\n if (legend.setItemEvents) {\n legend.setItemEvents(item, label, useHTML);\n }\n }\n // Add the HTML checkbox on top\n if (showCheckbox && !item.checkbox && legend.createCheckboxForItem) {\n legend.createCheckboxForItem(item);\n }\n // Colorize the items\n legend.colorizeItem(item, item.visible);\n // Take care of max width and text overflow (#6659)\n if (chart.styledMode || !itemStyle.width) {\n label.css({\n width: ((options.itemWidth ||\n legend.widthOption ||\n chart.spacingBox.width) - itemExtraWidth) + 'px'\n });\n }\n // Always update the text\n legend.setText(item);\n // calculate the positions for the next line\n const bBox = label.getBBox();\n const fontMetricsH = (legend.fontMetrics && legend.fontMetrics.h) || 0;\n item.itemWidth = item.checkboxOffset =\n options.itemWidth ||\n legendItem.labelWidth ||\n bBox.width + itemExtraWidth;\n legend.maxItemWidth = Math.max(legend.maxItemWidth, item.itemWidth);\n legend.totalItemWidth += item.itemWidth;\n legend.itemHeight = item.itemHeight = Math.round(legendItem.labelHeight ||\n // use bBox for multiline (#16398)\n (bBox.height > fontMetricsH * 1.5 ? bBox.height : fontMetricsH));\n }\n /**\n * Get the position of the item in the layout. We now know the\n * maxItemWidth from the previous loop.\n *\n * @private\n * @function Highcharts.Legend#layoutItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n */\n layoutItem(item) {\n const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ? pick(options.itemDistance, 20) : 0, maxLegendWidth = this.maxLegendWidth, itemWidth = (options.alignColumns &&\n this.totalItemWidth > maxLegendWidth) ?\n this.maxItemWidth :\n item.itemWidth, legendItem = item.legendItem || {};\n // If the item exceeds the width, start a new line\n if (horizontal &&\n this.itemX - padding + itemWidth > maxLegendWidth) {\n this.itemX = padding;\n if (this.lastLineHeight) { // Not for the first line (#10167)\n this.itemY += (itemMarginTop +\n this.lastLineHeight +\n itemMarginBottom);\n }\n this.lastLineHeight = 0; // reset for next line (#915, #3976)\n }\n // Set the edge positions\n this.lastItemY = itemMarginTop + this.itemY + itemMarginBottom;\n this.lastLineHeight = Math.max(// #915\n itemHeight, this.lastLineHeight);\n // cache the position of the newly generated or reordered items\n legendItem.x = this.itemX;\n legendItem.y = this.itemY;\n // advance\n if (horizontal) {\n this.itemX += itemWidth;\n }\n else {\n this.itemY +=\n itemMarginTop + itemHeight + itemMarginBottom;\n this.lastLineHeight = itemHeight;\n }\n // the width of the widest item\n this.offsetWidth = this.widthOption || Math.max((horizontal ? this.itemX - padding - (item.checkbox ?\n // decrease by itemDistance only when no checkbox #4853\n 0 :\n itemDistance) : itemWidth) + padding, this.offsetWidth);\n }\n /**\n * Get all items, which is one item per series for most series and one\n * item per point for pie series and its derivatives. Fires the event\n * `afterGetAllItems`.\n *\n * @private\n * @function Highcharts.Legend#getAllItems\n * @return {Array<(Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series)>}\n * The current items in the legend.\n * @emits Highcharts.Legend#event:afterGetAllItems\n */\n getAllItems() {\n let allItems = [];\n this.chart.series.forEach(function (series) {\n const seriesOptions = series && series.options;\n // Handle showInLegend. If the series is linked to another series,\n // defaults to false.\n if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {\n // Use points or series for the legend item depending on\n // legendType\n allItems = allItems.concat((series.legendItem || {}).labels ||\n (seriesOptions.legendType === 'point' ?\n series.data :\n series));\n }\n });\n fireEvent(this, 'afterGetAllItems', { allItems });\n return allItems;\n }\n /**\n * Get a short, three letter string reflecting the alignment and layout.\n *\n * @private\n * @function Highcharts.Legend#getAlignment\n * @return {string}\n * The alignment, empty string if floating\n */\n getAlignment() {\n const options = this.options;\n // Use the first letter of each alignment option in order to detect\n // the side. (#4189 - use charAt(x) notation instead of [x] for IE7)\n if (this.proximate) {\n return options.align.charAt(0) + 'tv';\n }\n return options.floating ? '' : (options.align.charAt(0) +\n options.verticalAlign.charAt(0) +\n options.layout.charAt(0));\n }\n /**\n * Adjust the chart margins by reserving space for the legend on only one\n * side of the chart. If the position is set to a corner, top or bottom is\n * reserved for horizontal legends and left or right for vertical ones.\n *\n * @private\n * @function Highcharts.Legend#adjustMargins\n * @param {Array} margin\n * @param {Array} spacing\n */\n adjustMargins(margin, spacing) {\n const chart = this.chart, options = this.options, alignment = this.getAlignment();\n if (alignment) {\n ([\n /(lth|ct|rth)/,\n /(rtv|rm|rbv)/,\n /(rbh|cb|lbh)/,\n /(lbv|lm|ltv)/\n ]).forEach(function (alignments, side) {\n if (alignments.test(alignment) && !defined(margin[side])) {\n // Now we have detected on which side of the chart we should\n // reserve space for the legend\n chart[marginNames[side]] = Math.max(chart[marginNames[side]], (chart.legend[(side + 1) % 2 ? 'legendHeight' : 'legendWidth'] +\n [1, -1, -1, 1][side] * options[(side % 2) ? 'x' : 'y'] +\n pick(options.margin, 12) +\n spacing[side] +\n (chart.titleOffset[side] || 0)));\n }\n });\n }\n }\n /**\n * @private\n * @function Highcharts.Legend#proximatePositions\n */\n proximatePositions() {\n const chart = this.chart, boxes = [], alignLeft = this.options.align === 'left';\n this.allItems.forEach(function (item) {\n let lastPoint, height, useFirstPoint = alignLeft, target, top;\n if (item.yAxis) {\n if (item.xAxis.options.reversed) {\n useFirstPoint = !useFirstPoint;\n }\n if (item.points) {\n lastPoint = find(useFirstPoint ?\n item.points :\n item.points.slice(0).reverse(), function (item) {\n return isNumber(item.plotY);\n });\n }\n height = this.itemMarginTop +\n item.legendItem.label.getBBox().height +\n this.itemMarginBottom;\n top = item.yAxis.top - chart.plotTop;\n if (item.visible) {\n target = lastPoint ?\n lastPoint.plotY :\n item.yAxis.height;\n target += top - 0.3 * height;\n }\n else {\n target = top + item.yAxis.height;\n }\n boxes.push({\n target: target,\n size: height,\n item\n });\n }\n }, this);\n let legendItem;\n for (const box of distribute(boxes, chart.plotHeight)) {\n legendItem = box.item.legendItem || {};\n if (isNumber(box.pos)) {\n legendItem.y = chart.plotTop - chart.spacing[0] + box.pos;\n }\n }\n }\n /**\n * Render the legend. This method can be called both before and after\n * `chart.render`. If called after, it will only rearrange items instead\n * of creating new ones. Called internally on initial render and after\n * redraws.\n *\n * @private\n * @function Highcharts.Legend#render\n */\n render() {\n const legend = this, chart = legend.chart, renderer = chart.renderer, options = legend.options, padding = legend.padding, \n // add each series or point\n allItems = legend.getAllItems();\n let display, legendWidth, legendHeight, legendGroup = legend.group, allowedWidth, box = legend.box;\n legend.itemX = padding;\n legend.itemY = legend.initialItemY;\n legend.offsetWidth = 0;\n legend.lastItemY = 0;\n legend.widthOption = relativeLength(options.width, chart.spacingBox.width - padding);\n // Compute how wide the legend is allowed to be\n allowedWidth = chart.spacingBox.width - 2 * padding - options.x;\n if (['rm', 'lm'].indexOf(legend.getAlignment().substring(0, 2)) > -1) {\n allowedWidth /= 2;\n }\n legend.maxLegendWidth = legend.widthOption || allowedWidth;\n if (!legendGroup) {\n /**\n * SVG group of the legend.\n *\n * @readonly\n * @name Highcharts.Legend#group\n * @type {Highcharts.SVGElement}\n */\n legend.group = legendGroup = renderer\n .g('legend')\n .addClass(options.className || '')\n .attr({ zIndex: 7 })\n .add();\n legend.contentGroup = renderer\n .g()\n .attr({ zIndex: 1 }) // above background\n .add(legendGroup);\n legend.scrollGroup = renderer\n .g()\n .add(legend.contentGroup);\n }\n legend.renderTitle();\n // sort by legendIndex\n stableSort(allItems, (a, b) => ((a.options && a.options.legendIndex) || 0) -\n ((b.options && b.options.legendIndex) || 0));\n // reversed legend\n if (options.reversed) {\n allItems.reverse();\n }\n /**\n * All items for the legend, which is an array of series for most series\n * and an array of points for pie series and its derivatives.\n *\n * @readonly\n * @name Highcharts.Legend#allItems\n * @type {Array<(Highcharts.Point|Highcharts.Series)>}\n */\n legend.allItems = allItems;\n legend.display = display = !!allItems.length;\n // Render the items. First we run a loop to set the text and properties\n // and read all the bounding boxes. The next loop computes the item\n // positions based on the bounding boxes.\n legend.lastLineHeight = 0;\n legend.maxItemWidth = 0;\n legend.totalItemWidth = 0;\n legend.itemHeight = 0;\n allItems.forEach(legend.renderItem, legend);\n allItems.forEach(legend.layoutItem, legend);\n // Get the box\n legendWidth = (legend.widthOption || legend.offsetWidth) + padding;\n legendHeight = legend.lastItemY + legend.lastLineHeight +\n legend.titleHeight;\n legendHeight = legend.handleOverflow(legendHeight);\n legendHeight += padding;\n // Draw the border and/or background\n if (!box) {\n /**\n * SVG element of the legend box.\n *\n * @readonly\n * @name Highcharts.Legend#box\n * @type {Highcharts.SVGElement}\n */\n legend.box = box = renderer.rect()\n .addClass('highcharts-legend-box')\n .attr({\n r: options.borderRadius\n })\n .add(legendGroup);\n }\n // Presentational\n if (!chart.styledMode) {\n box\n .attr({\n stroke: options.borderColor,\n 'stroke-width': options.borderWidth || 0,\n fill: options.backgroundColor || 'none'\n })\n .shadow(options.shadow);\n }\n if (legendWidth > 0 && legendHeight > 0) {\n box[box.placed ? 'animate' : 'attr'](box.crisp.call({}, {\n x: 0,\n y: 0,\n width: legendWidth,\n height: legendHeight\n }, box.strokeWidth()));\n }\n // hide the border if no items\n legendGroup[display ? 'show' : 'hide']();\n // Open for responsiveness\n if (chart.styledMode && legendGroup.getStyle('display') === 'none') {\n legendWidth = legendHeight = 0;\n }\n legend.legendWidth = legendWidth;\n legend.legendHeight = legendHeight;\n if (display) {\n legend.align();\n }\n if (!this.proximate) {\n this.positionItems();\n }\n fireEvent(this, 'afterRender');\n }\n /**\n * Align the legend to chart's box.\n *\n * @private\n * @function Highcharts.align\n * @param {Highcharts.BBoxObject} alignTo\n */\n align(alignTo = this.chart.spacingBox) {\n const chart = this.chart, options = this.options;\n // If aligning to the top and the layout is horizontal, adjust for\n // the title (#7428)\n let y = alignTo.y;\n if (/(lth|ct|rth)/.test(this.getAlignment()) &&\n chart.titleOffset[0] > 0) {\n y += chart.titleOffset[0];\n }\n else if (/(lbh|cb|rbh)/.test(this.getAlignment()) &&\n chart.titleOffset[2] > 0) {\n y -= chart.titleOffset[2];\n }\n if (y !== alignTo.y) {\n alignTo = merge(alignTo, { y });\n }\n if (!chart.hasRendered) {\n // Avoid animation when adjusting alignment for responsiveness and\n // colorAxis label layout\n this.group.placed = false;\n }\n this.group.align(merge(options, {\n width: this.legendWidth,\n height: this.legendHeight,\n verticalAlign: this.proximate ? 'top' : options.verticalAlign\n }), true, alignTo);\n }\n /**\n * Set up the overflow handling by adding navigation with up and down arrows\n * below the legend.\n *\n * @private\n * @function Highcharts.Legend#handleOverflow\n */\n handleOverflow(legendHeight) {\n const legend = this, chart = this.chart, renderer = chart.renderer, options = this.options, optionsY = options.y, alignTop = options.verticalAlign === 'top', padding = this.padding, maxHeight = options.maxHeight, navOptions = options.navigation, animation = pick(navOptions.animation, true), arrowSize = navOptions.arrowSize || 12, pages = this.pages, allItems = this.allItems, clipToHeight = function (height) {\n if (typeof height === 'number') {\n clipRect.attr({\n height: height\n });\n }\n else if (clipRect) { // Reset (#5912)\n legend.clipRect = clipRect.destroy();\n legend.contentGroup.clip();\n }\n // useHTML\n if (legend.contentGroup.div) {\n legend.contentGroup.div.style.clip = height ?\n 'rect(' + padding + 'px,9999px,' +\n (padding + height) + 'px,0)' :\n 'auto';\n }\n }, addTracker = function (key) {\n legend[key] = renderer\n .circle(0, 0, arrowSize * 1.3)\n .translate(arrowSize / 2, arrowSize / 2)\n .add(nav);\n if (!chart.styledMode) {\n legend[key].attr('fill', 'rgba(0,0,0,0.0001)');\n }\n return legend[key];\n };\n let clipHeight, lastY, legendItem, spaceHeight = (chart.spacingBox.height +\n (alignTop ? -optionsY : optionsY) - padding), nav = this.nav, clipRect = this.clipRect;\n // Adjust the height\n if (options.layout === 'horizontal' &&\n options.verticalAlign !== 'middle' &&\n !options.floating) {\n spaceHeight /= 2;\n }\n if (maxHeight) {\n spaceHeight = Math.min(spaceHeight, maxHeight);\n }\n // Reset the legend height and adjust the clipping rectangle\n pages.length = 0;\n if (legendHeight &&\n spaceHeight > 0 &&\n legendHeight > spaceHeight &&\n navOptions.enabled !== false) {\n this.clipHeight = clipHeight =\n Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);\n this.currentPage = pick(this.currentPage, 1);\n this.fullHeight = legendHeight;\n // Fill pages with Y positions so that the top of each a legend item\n // defines the scroll top for each page (#2098)\n allItems.forEach((item, i) => {\n legendItem = item.legendItem || {};\n const y = legendItem.y || 0, h = Math.round(legendItem.label.getBBox().height);\n let len = pages.length;\n if (!len || (y - pages[len - 1] > clipHeight &&\n (lastY || y) !== pages[len - 1])) {\n pages.push(lastY || y);\n len++;\n }\n // Keep track of which page each item is on\n legendItem.pageIx = len - 1;\n if (lastY) {\n (allItems[i - 1].legendItem || {}).pageIx = len - 1;\n }\n // add the last page if needed (#2617, #13683)\n if (\n // check the last item\n i === allItems.length - 1 &&\n // if adding next page is needed (#18768)\n y + h - pages[len - 1] > clipHeight &&\n y > pages[len - 1]) {\n pages.push(y);\n legendItem.pageIx = len;\n }\n if (y !== lastY) {\n lastY = y;\n }\n });\n // Only apply clipping if needed. Clipping causes blurred legend in\n // PDF export (#1787)\n if (!clipRect) {\n clipRect = legend.clipRect =\n renderer.clipRect(0, padding - 2, 9999, 0);\n legend.contentGroup.clip(clipRect);\n }\n clipToHeight(clipHeight);\n // Add navigation elements\n if (!nav) {\n this.nav = nav = renderer.g()\n .attr({ zIndex: 1 })\n .add(this.group);\n this.up = renderer\n .symbol('triangle', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('upTracker')\n .on('click', function () {\n legend.scroll(-1, animation);\n });\n this.pager = renderer.text('', 15, 10)\n .addClass('highcharts-legend-navigation');\n if (!chart.styledMode && navOptions.style) {\n this.pager.css(navOptions.style);\n }\n this.pager.add(nav);\n this.down = renderer\n .symbol('triangle-down', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('downTracker')\n .on('click', function () {\n legend.scroll(1, animation);\n });\n }\n // Set initial position\n legend.scroll(0);\n legendHeight = spaceHeight;\n // Reset\n }\n else if (nav) {\n clipToHeight();\n this.nav = nav.destroy(); // #6322\n this.scrollGroup.attr({\n translateY: 1\n });\n this.clipHeight = 0; // #1379\n }\n return legendHeight;\n }\n /**\n * Scroll the legend by a number of pages.\n *\n * @private\n * @function Highcharts.Legend#scroll\n *\n * @param {number} scrollBy\n * The number of pages to scroll.\n *\n * @param {boolean|Partial} [animation]\n * Whether and how to apply animation.\n *\n */\n scroll(scrollBy, animation) {\n const chart = this.chart, pages = this.pages, pageCount = pages.length, clipHeight = this.clipHeight, navOptions = this.options.navigation, pager = this.pager, padding = this.padding;\n let currentPage = this.currentPage + scrollBy;\n // When resizing while looking at the last page\n if (currentPage > pageCount) {\n currentPage = pageCount;\n }\n if (currentPage > 0) {\n if (typeof animation !== 'undefined') {\n setAnimation(animation, chart);\n }\n this.nav.attr({\n translateX: padding,\n translateY: clipHeight + this.padding + 7 + this.titleHeight,\n visibility: 'inherit'\n });\n [this.up, this.upTracker].forEach(function (elem) {\n elem.attr({\n 'class': currentPage === 1 ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n });\n pager.attr({\n text: currentPage + '/' + pageCount\n });\n [this.down, this.downTracker].forEach(function (elem) {\n elem.attr({\n // adjust to text width\n x: 18 + this.pager.getBBox().width,\n 'class': currentPage === pageCount ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n }, this);\n if (!chart.styledMode) {\n this.up\n .attr({\n fill: currentPage === 1 ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.upTracker\n .css({\n cursor: currentPage === 1 ? 'default' : 'pointer'\n });\n this.down\n .attr({\n fill: currentPage === pageCount ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.downTracker\n .css({\n cursor: currentPage === pageCount ?\n 'default' :\n 'pointer'\n });\n }\n this.scrollOffset = -pages[currentPage - 1] + this.initialItemY;\n this.scrollGroup.animate({\n translateY: this.scrollOffset\n });\n this.currentPage = currentPage;\n this.positionCheckboxes();\n // Fire event after scroll animation is complete\n const animOptions = animObject(pick(animation, chart.renderer.globalAnimation, true));\n syncTimeout(() => {\n fireEvent(this, 'afterScroll', { currentPage });\n }, animOptions.duration);\n }\n }\n /**\n * @private\n * @function Highcharts.Legend#setItemEvents\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @param {Highcharts.SVGElement} legendLabel\n * @param {boolean} [useHTML=false]\n * @emits Highcharts.Point#event:legendItemClick\n * @emits Highcharts.Series#event:legendItemClick\n */\n setItemEvents(item, legendLabel, useHTML) {\n const legend = this, legendItem = item.legendItem || {}, boxWrapper = legend.chart.renderer.boxWrapper, isPoint = item instanceof Point, activeClass = 'highcharts-legend-' +\n (isPoint ? 'point' : 'series') + '-active', styledMode = legend.chart.styledMode, \n // When `useHTML`, the symbol is rendered in other group, so\n // we need to apply events listeners to both places\n legendElements = useHTML ?\n [legendLabel, legendItem.symbol] :\n [legendItem.group];\n const setOtherItemsState = (state) => {\n legend.allItems.forEach((otherItem) => {\n if (item !== otherItem) {\n [otherItem]\n .concat(otherItem.linkedSeries || [])\n .forEach((otherItem) => {\n otherItem.setState(state, !isPoint);\n });\n }\n });\n };\n // Set the events on the item group, or in case of useHTML, the item\n // itself (#1249)\n for (const element of legendElements) {\n if (element) {\n element\n .on('mouseover', function () {\n if (item.visible) {\n setOtherItemsState('inactive');\n }\n item.setState('hover');\n // A CSS class to dim or hide other than the hovered\n // series.\n // Works only if hovered series is visible (#10071).\n if (item.visible) {\n boxWrapper.addClass(activeClass);\n }\n if (!styledMode) {\n legendLabel.css(legend.options.itemHoverStyle);\n }\n })\n .on('mouseout', function () {\n if (!legend.chart.styledMode) {\n legendLabel.css(merge(item.visible ?\n legend.itemStyle :\n legend.itemHiddenStyle));\n }\n setOtherItemsState('');\n // A CSS class to dim or hide other than the hovered\n // series.\n boxWrapper.removeClass(activeClass);\n item.setState();\n })\n .on('click', function (event) {\n const strLegendItemClick = 'legendItemClick', fnLegendItemClick = function () {\n if (item.setVisible) {\n item.setVisible();\n }\n // Reset inactive state\n setOtherItemsState(item.visible ? 'inactive' : '');\n };\n // A CSS class to dim or hide other than the hovered\n // series. Event handling in iOS causes the activeClass\n // to be added prior to click in some cases (#7418).\n boxWrapper.removeClass(activeClass);\n // Pass over the click/touch event. #4.\n event = {\n browserEvent: event\n };\n // click the name or symbol\n if (item.firePointEvent) { // point\n item.firePointEvent(strLegendItemClick, event, fnLegendItemClick);\n }\n else {\n fireEvent(item, strLegendItemClick, event, fnLegendItemClick);\n }\n });\n }\n }\n }\n /**\n * @private\n * @function Highcharts.Legend#createCheckboxForItem\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @emits Highcharts.Series#event:checkboxClick\n */\n createCheckboxForItem(item) {\n const legend = this;\n item.checkbox = createElement('input', {\n type: 'checkbox',\n className: 'highcharts-legend-checkbox',\n checked: item.selected,\n defaultChecked: item.selected // required by IE7\n }, legend.options.itemCheckboxStyle, legend.chart.container);\n addEvent(item.checkbox, 'click', function (event) {\n const target = event.target;\n fireEvent(item.series || item, 'checkboxClick', {\n checked: target.checked,\n item: item\n }, function () {\n item.select();\n });\n });\n }\n }\n /* *\n *\n * Class Namespace\n *\n * */\n (function (Legend) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (U.pushUnique(composedMembers, ChartClass)) {\n addEvent(ChartClass, 'beforeMargins', function () {\n /**\n * The legend contains an interactive overview over chart items,\n * usually individual series or points depending on the series\n * type. The color axis and bubble legend are also rendered in\n * the chart legend.\n *\n * @name Highcharts.Chart#legend\n * @type {Highcharts.Legend}\n */\n this.legend = new Legend(this, this.options.legend);\n });\n }\n }\n Legend.compose = compose;\n })(Legend || (Legend = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @interface Highcharts.LegendItemObject\n */ /**\n * @name Highcharts.LegendItemObject#item\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#line\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#symbol\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * Gets fired when the legend item belonging to a point is clicked. The default\n * action is to toggle the visibility of the point. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.PointLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point on which the event occured.\n *\n * @param {Highcharts.PointLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.PointLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.PointLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the point.\n * @name Highcharts.PointLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related point.\n * @name Highcharts.PointLegendItemClickEventObject#target\n * @type {Highcharts.Point}\n */ /**\n * Event type.\n * @name Highcharts.PointLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n /**\n * Series color as used by the legend and some series types.\n * @name Highcharts.Series#color\n * @type {Highcharts.ColorType|undefined}\n */ /**\n * Legend data for the series.\n * @name Highcharts.Series#legendItem\n * @type {Highcharts.LegendItemObject|undefined}\n * @since 10.3.0\n */\n /**\n * Gets fired when the legend item belonging to a series is clicked. The default\n * action is to toggle the visibility of the series. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesLegendItemClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n (''); // keeps doclets above in JS file\n\n return Legend;\n });\n _registerModule(_modules, 'Core/Series/SeriesRegistry.js', [_modules['Core/Globals.js'], _modules['Core/Defaults.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (H, D, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { defaultOptions } = D;\n const { extendClass, merge } = U;\n /* *\n *\n * Namespace\n *\n * */\n var SeriesRegistry;\n (function (SeriesRegistry) {\n /* *\n *\n * Properties\n *\n * */\n /**\n * @internal\n * @todo Move `Globals.seriesTypes` code to her.\n */\n SeriesRegistry.seriesTypes = H.seriesTypes;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Registers class pattern of a series.\n *\n * @private\n */\n function registerSeriesType(seriesType, SeriesClass) {\n const defaultPlotOptions = defaultOptions.plotOptions || {}, seriesOptions = SeriesClass.defaultOptions, seriesProto = SeriesClass.prototype;\n seriesProto.type = seriesType;\n if (!seriesProto.pointClass) {\n seriesProto.pointClass = Point;\n }\n if (seriesOptions) {\n defaultPlotOptions[seriesType] = seriesOptions;\n }\n SeriesRegistry.seriesTypes[seriesType] = SeriesClass;\n }\n SeriesRegistry.registerSeriesType = registerSeriesType;\n /**\n * Old factory to create new series prototypes.\n *\n * @deprecated\n * @function Highcharts.seriesType\n *\n * @param {string} type\n * The series type name.\n *\n * @param {string} parent\n * The parent series type name. Use `line` to inherit from the basic\n * {@link Series} object.\n *\n * @param {Highcharts.SeriesOptionsType|Highcharts.Dictionary<*>} options\n * The additional default options that are merged with the parent's options.\n *\n * @param {Highcharts.Dictionary<*>} [props]\n * The properties (functions and primitives) to set on the new prototype.\n *\n * @param {Highcharts.Dictionary<*>} [pointProps]\n * Members for a series-specific extension of the {@link Point} prototype if\n * needed.\n *\n * @return {Highcharts.Series}\n * The newly created prototype as extended from {@link Series} or its\n * derivatives.\n */\n function seriesType(type, parent, options, seriesProto, pointProto) {\n const defaultPlotOptions = defaultOptions.plotOptions || {};\n parent = parent || '';\n // Merge the options\n defaultPlotOptions[type] = merge(defaultPlotOptions[parent], options);\n // Create the class\n registerSeriesType(type, extendClass(SeriesRegistry.seriesTypes[parent] || function () { }, seriesProto));\n SeriesRegistry.seriesTypes[type].prototype.type = type;\n // Create the point class if needed\n if (pointProto) {\n SeriesRegistry.seriesTypes[type].prototype.pointClass = extendClass(Point, pointProto);\n }\n return SeriesRegistry.seriesTypes[type];\n }\n SeriesRegistry.seriesType = seriesType;\n })(SeriesRegistry || (SeriesRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return SeriesRegistry;\n });\n _registerModule(_modules, 'Core/Chart/Chart.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js'], _modules['Core/Renderer/HTML/AST.js']], function (A, Axis, D, FormatUtilities, Foundation, H, RendererRegistry, SeriesRegistry, SVGRenderer, Time, U, AST) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { animate, animObject, setAnimation } = A;\n const { defaultOptions, defaultTime } = D;\n const { numberFormat } = FormatUtilities;\n const { registerEventOptions } = Foundation;\n const { charts, doc, marginNames, svg, win } = H;\n const { seriesTypes } = SeriesRegistry;\n const { addEvent, attr, cleanRecursively, createElement, css, defined, discardElement, erase, error, extend, find, fireEvent, getStyle, isArray, isNumber, isObject, isString, merge, objectEach, pick, pInt, relativeLength, removeEvent, splat, syncTimeout, uniqueKey } = U;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Chart class. The recommended constructor is {@link Highcharts#chart}.\n *\n * @example\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * })\n *\n * @class\n * @name Highcharts.Chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images\n * are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n */\n class Chart {\n /**\n * Factory function for basic charts.\n *\n * @example\n * // Render a chart in to div#container\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * });\n *\n * @function Highcharts.chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images are\n * loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.Chart}\n * Returns the Chart object.\n */\n static chart(a, b, c) {\n return new Chart(a, b, c);\n }\n constructor(a, b, c) {\n this.axes = void 0;\n this.axisOffset = void 0;\n this.bounds = void 0;\n this.chartHeight = void 0;\n this.chartWidth = void 0;\n this.clipBox = void 0;\n this.colorCounter = void 0;\n this.container = void 0;\n this.eventOptions = void 0;\n this.index = void 0;\n this.isResizing = void 0;\n this.labelCollectors = void 0;\n this.margin = void 0;\n this.numberFormatter = void 0;\n this.options = void 0;\n this.plotBox = void 0;\n this.plotHeight = void 0;\n this.plotLeft = void 0;\n this.plotTop = void 0;\n this.plotWidth = void 0;\n this.pointCount = void 0;\n this.pointer = void 0;\n this.renderer = void 0;\n this.renderTo = void 0;\n this.series = void 0;\n this.sharedClips = {};\n this.spacing = void 0;\n this.spacingBox = void 0;\n this.symbolCounter = void 0;\n this.time = void 0;\n this.titleOffset = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.getArgs(a, b, c);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Handle the arguments passed to the constructor.\n *\n * @private\n * @function Highcharts.Chart#getArgs\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n getArgs(a, b, c) {\n // Remove the optional first argument, renderTo, and\n // set it on this.\n if (isString(a) || a.nodeName) {\n this.renderTo = a;\n this.init(b, c);\n }\n else {\n this.init(a, b);\n }\n }\n /**\n * Overridable function that initializes the chart. The constructor's\n * arguments are passed on directly.\n *\n * @function Highcharts.Chart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n init(userOptions, callback) {\n // Handle regular options\n const userPlotOptions = userOptions.plotOptions || {};\n // Fire the event with a default function\n fireEvent(this, 'init', { args: arguments }, function () {\n const options = merge(defaultOptions, userOptions); // do the merge\n const optionsChart = options.chart;\n // Override (by copy of user options) or clear tooltip options\n // in chart.options.plotOptions (#6218)\n objectEach(options.plotOptions, function (typeOptions, type) {\n if (isObject(typeOptions)) { // #8766\n typeOptions.tooltip = (userPlotOptions[type] && // override by copy:\n merge(userPlotOptions[type].tooltip)) || void 0; // or clear\n }\n });\n // User options have higher priority than default options\n // (#6218). In case of exporting: path is changed\n options.tooltip.userOptions = (userOptions.chart &&\n userOptions.chart.forExport &&\n userOptions.tooltip.userOptions) || userOptions.tooltip;\n /**\n * The original options given to the constructor or a chart factory\n * like {@link Highcharts.chart} and {@link Highcharts.stockChart}.\n *\n * @name Highcharts.Chart#userOptions\n * @type {Highcharts.Options}\n */\n this.userOptions = userOptions;\n this.margin = [];\n this.spacing = [];\n // Pixel data bounds for touch zoom\n this.bounds = { h: {}, v: {} };\n // An array of functions that returns labels that should be\n // considered for anti-collision\n this.labelCollectors = [];\n this.callback = callback;\n this.isResizing = 0;\n const zooming = optionsChart.zooming = optionsChart.zooming || {};\n // Other options have no default so just pick\n if (userOptions.chart && !userOptions.chart.zooming) {\n zooming.resetButton = optionsChart.resetZoomButton;\n }\n zooming.key = pick(zooming.key, optionsChart.zoomKey);\n zooming.pinchType = pick(zooming.pinchType, optionsChart.pinchType);\n zooming.singleTouch = pick(zooming.singleTouch, optionsChart.zoomBySingleTouch);\n zooming.type = pick(zooming.type, optionsChart.zoomType);\n /**\n * The options structure for the chart after merging\n * {@link #defaultOptions} and {@link #userOptions}. It contains\n * members for the sub elements like series, legend, tooltip etc.\n *\n * @name Highcharts.Chart#options\n * @type {Highcharts.Options}\n */\n this.options = options;\n /**\n * All the axes in the chart.\n *\n * @see Highcharts.Chart.xAxis\n * @see Highcharts.Chart.yAxis\n *\n * @name Highcharts.Chart#axes\n * @type {Array}\n */\n this.axes = [];\n /**\n * All the current series in the chart.\n *\n * @name Highcharts.Chart#series\n * @type {Array}\n */\n this.series = [];\n /**\n * The `Time` object associated with the chart. Since v6.0.5,\n * time settings can be applied individually for each chart. If\n * no individual settings apply, the `Time` object is shared by\n * all instances.\n *\n * @name Highcharts.Chart#time\n * @type {Highcharts.Time}\n */\n this.time =\n userOptions.time && Object.keys(userOptions.time).length ?\n new Time(userOptions.time) :\n H.time;\n /**\n * Callback function to override the default function that formats\n * all the numbers in the chart. Returns a string with the formatted\n * number.\n *\n * @name Highcharts.Chart#numberFormatter\n * @type {Highcharts.NumberFormatterCallbackFunction}\n */\n this.numberFormatter = optionsChart.numberFormatter || numberFormat;\n /**\n * Whether the chart is in styled mode, meaning all presentational\n * attributes are avoided.\n *\n * @name Highcharts.Chart#styledMode\n * @type {boolean}\n */\n this.styledMode = optionsChart.styledMode;\n this.hasCartesianSeries = optionsChart.showAxes;\n const chart = this;\n /**\n * Index position of the chart in the {@link Highcharts#charts}\n * property.\n *\n * @name Highcharts.Chart#index\n * @type {number}\n * @readonly\n */\n chart.index = charts.length; // Add the chart to the global lookup\n charts.push(chart);\n H.chartCount++;\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n /**\n * A collection of the X axes in the chart.\n *\n * @name Highcharts.Chart#xAxis\n * @type {Array}\n */\n chart.xAxis = [];\n /**\n * A collection of the Y axes in the chart.\n *\n * @name Highcharts.Chart#yAxis\n * @type {Array}\n *\n * @todo\n * Make events official: Fire the event `afterInit`.\n */\n chart.yAxis = [];\n chart.pointCount = chart.colorCounter = chart.symbolCounter = 0;\n // Fire after init but before first render, before axes and series\n // have been initialized.\n fireEvent(chart, 'afterInit');\n chart.firstRender();\n });\n }\n /**\n * Internal function to unitialize an individual series.\n *\n * @private\n * @function Highcharts.Chart#initSeries\n */\n initSeries(options) {\n const chart = this, optionsChart = chart.options.chart, type = (options.type ||\n optionsChart.type), SeriesClass = seriesTypes[type];\n // No such series type\n if (!SeriesClass) {\n error(17, true, chart, { missingModuleFor: type });\n }\n const series = new SeriesClass();\n if (typeof series.init === 'function') {\n series.init(chart, options);\n }\n return series;\n }\n /**\n * Internal function to set data for all series with enabled sorting.\n *\n * @private\n * @function Highcharts.Chart#setSeriesData\n */\n setSeriesData() {\n this.getSeriesOrderByLinks().forEach(function (series) {\n // We need to set data for series with sorting after series init\n if (!series.points && !series.data && series.enabledDataSorting) {\n series.setData(series.options.data, false);\n }\n });\n }\n /**\n * Sort and return chart series in order depending on the number of linked\n * series.\n *\n * @private\n * @function Highcharts.Series#getSeriesOrderByLinks\n */\n getSeriesOrderByLinks() {\n return this.series.concat().sort(function (a, b) {\n if (a.linkedSeries.length || b.linkedSeries.length) {\n return b.linkedSeries.length - a.linkedSeries.length;\n }\n return 0;\n });\n }\n /**\n * Order all series above a given index. When series are added and ordered\n * by configuration, only the last series is handled (#248, #1123, #2456,\n * #6112). This function is called on series initialization and destroy.\n *\n * @private\n * @function Highcharts.Series#orderSeries\n * @param {number} [fromIndex]\n * If this is given, only the series above this index are handled.\n */\n orderSeries(fromIndex) {\n const series = this.series;\n for (let i = (fromIndex || 0), iEnd = series.length; i < iEnd; ++i) {\n if (series[i]) {\n /**\n * Contains the series' index in the `Chart.series` array.\n *\n * @name Highcharts.Series#index\n * @type {number}\n * @readonly\n */\n series[i].index = i;\n series[i].name = series[i].getName();\n }\n }\n }\n /**\n * Check whether a given point is within the plot area.\n *\n * @function Highcharts.Chart#isInsidePlot\n *\n * @param {number} plotX\n * Pixel x relative to the plot area.\n *\n * @param {number} plotY\n * Pixel y relative to the plot area.\n *\n * @param {Highcharts.ChartIsInsideOptionsObject} [options]\n * Options object.\n *\n * @return {boolean}\n * Returns true if the given point is inside the plot area.\n */\n isInsidePlot(plotX, plotY, options = {}) {\n const { inverted, plotBox, plotLeft, plotTop, scrollablePlotBox } = this;\n let scrollLeft = 0, scrollTop = 0;\n if (options.visiblePlotOnly && this.scrollingContainer) {\n ({ scrollLeft, scrollTop } = this.scrollingContainer);\n }\n const series = options.series, box = (options.visiblePlotOnly && scrollablePlotBox) || plotBox, x = options.inverted ? plotY : plotX, y = options.inverted ? plotX : plotY, e = {\n x,\n y,\n isInsidePlot: true,\n options\n };\n if (!options.ignoreX) {\n const xAxis = (series &&\n (inverted && !this.polar ? series.yAxis : series.xAxis)) || {\n pos: plotLeft,\n len: Infinity\n };\n const chartX = options.paneCoordinates ?\n xAxis.pos + x : plotLeft + x;\n if (!(chartX >= Math.max(scrollLeft + plotLeft, xAxis.pos) &&\n chartX <= Math.min(scrollLeft + plotLeft + box.width, xAxis.pos + xAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n if (!options.ignoreY && e.isInsidePlot) {\n const yAxis = (!inverted && options.axis &&\n !options.axis.isXAxis && options.axis) || (series && (inverted ? series.xAxis : series.yAxis)) || {\n pos: plotTop,\n len: Infinity\n };\n const chartY = options.paneCoordinates ?\n yAxis.pos + y : plotTop + y;\n if (!(chartY >= Math.max(scrollTop + plotTop, yAxis.pos) &&\n chartY <= Math.min(scrollTop + plotTop + box.height, yAxis.pos + yAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n fireEvent(this, 'afterIsInsidePlot', e);\n return e.isInsidePlot;\n }\n /**\n * Redraw the chart after changes have been done to the data, axis extremes\n * chart size or chart elements. All methods for updating axes, series or\n * points have a parameter for redrawing the chart. This is `true` by\n * default. But in many cases you want to do more than one operation on the\n * chart before redrawing, for example add a number of points. In those\n * cases it is a waste of resources to redraw the chart for each new point\n * added. So you add the points and call `chart.redraw()` after.\n *\n * @function Highcharts.Chart#redraw\n *\n * @param {boolean|Partial} [animation]\n * If or how to apply animation to the redraw. When `undefined`, it applies\n * the animation that is set in the `chart.animation` option.\n *\n * @emits Highcharts.Chart#event:afterSetExtremes\n * @emits Highcharts.Chart#event:beforeRedraw\n * @emits Highcharts.Chart#event:predraw\n * @emits Highcharts.Chart#event:redraw\n * @emits Highcharts.Chart#event:render\n * @emits Highcharts.Chart#event:updatedData\n */\n redraw(animation) {\n fireEvent(this, 'beforeRedraw');\n const chart = this, axes = chart.hasCartesianSeries ? chart.axes : chart.colorAxis || [], series = chart.series, pointer = chart.pointer, legend = chart.legend, legendUserOptions = chart.userOptions.legend, renderer = chart.renderer, isHiddenChart = renderer.isHidden(), afterRedraw = [];\n let hasDirtyStacks, hasStackedSeries, i, isDirtyBox = chart.isDirtyBox, redrawLegend = chart.isDirtyLegend, serie;\n renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');\n // Handle responsive rules, not only on resize (#6130)\n if (chart.setResponsive) {\n chart.setResponsive(false);\n }\n // Set the global animation. When chart.hasRendered is not true, the\n // redraw call comes from a responsive rule and animation should not\n // occur.\n setAnimation(chart.hasRendered ? animation : false, chart);\n if (isHiddenChart) {\n chart.temporaryDisplay();\n }\n // Adjust title layout (reflow multiline text)\n chart.layOutTitles();\n // link stacked series\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking || serie.options.centerInCategory) {\n hasStackedSeries = true;\n if (serie.isDirty) {\n hasDirtyStacks = true;\n break;\n }\n }\n }\n if (hasDirtyStacks) { // mark others as dirty\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking) {\n serie.isDirty = true;\n }\n }\n }\n // Handle updated data in the series\n series.forEach(function (serie) {\n if (serie.isDirty) {\n if (serie.options.legendType === 'point') {\n if (typeof serie.updateTotals === 'function') {\n serie.updateTotals();\n }\n redrawLegend = true;\n }\n else if (legendUserOptions &&\n (legendUserOptions.labelFormatter ||\n legendUserOptions.labelFormat)) {\n redrawLegend = true; // #2165\n }\n }\n if (serie.isDirtyData) {\n fireEvent(serie, 'updatedData');\n }\n });\n // handle added or removed series\n if (redrawLegend && legend && legend.options.enabled) {\n // draw legend graphics\n legend.render();\n chart.isDirtyLegend = false;\n }\n // reset stacks\n if (hasStackedSeries) {\n chart.getStacks();\n }\n // set axes scales\n axes.forEach(function (axis) {\n axis.updateNames();\n axis.setScale();\n });\n chart.getMargins(); // #3098\n // If one axis is dirty, all axes must be redrawn (#792, #2169)\n axes.forEach(function (axis) {\n if (axis.isDirty) {\n isDirtyBox = true;\n }\n });\n // redraw axes\n axes.forEach(function (axis) {\n // Fire 'afterSetExtremes' only if extremes are set\n const key = axis.min + ',' + axis.max;\n if (axis.extKey !== key) { // #821, #4452\n axis.extKey = key;\n // prevent a recursive call to chart.redraw() (#1119)\n afterRedraw.push(function () {\n fireEvent(axis, 'afterSetExtremes', extend(axis.eventArgs, axis.getExtremes())); // #747, #751\n delete axis.eventArgs;\n });\n }\n if (isDirtyBox || hasStackedSeries) {\n axis.redraw();\n }\n });\n // the plot areas size has changed\n if (isDirtyBox) {\n chart.drawChartBox();\n }\n // Fire an event before redrawing series, used by the boost module to\n // clear previous series renderings.\n fireEvent(chart, 'predraw');\n // redraw affected series\n series.forEach(function (serie) {\n if ((isDirtyBox || serie.isDirty) && serie.visible) {\n serie.redraw();\n }\n // Set it here, otherwise we will have unlimited 'updatedData' calls\n // for a hidden series after setData(). Fixes #6012\n serie.isDirtyData = false;\n });\n // move tooltip or reset\n if (pointer) {\n pointer.reset(true);\n }\n // redraw if canvas\n renderer.draw();\n // Fire the events\n fireEvent(chart, 'redraw');\n fireEvent(chart, 'render');\n if (isHiddenChart) {\n chart.temporaryDisplay(true);\n }\n // Fire callbacks that are put on hold until after the redraw\n afterRedraw.forEach(function (callback) {\n callback.call();\n });\n }\n /**\n * Get an axis, series or point object by `id` as given in the configuration\n * options. Returns `undefined` if no item is found.\n *\n * @sample highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @function Highcharts.Chart#get\n *\n * @param {string} id\n * The id as given in the configuration options.\n *\n * @return {Highcharts.Axis|Highcharts.Series|Highcharts.Point|undefined}\n * The retrieved item.\n */\n get(id) {\n const series = this.series;\n /**\n * @private\n */\n function itemById(item) {\n return (item.id === id ||\n (item.options && item.options.id === id));\n }\n let ret = \n // Search axes\n find(this.axes, itemById) ||\n // Search series\n find(this.series, itemById);\n // Search points\n for (let i = 0; !ret && i < series.length; i++) {\n ret = find(series[i].points || [], itemById);\n }\n return ret;\n }\n /**\n * Create the Axis instances based on the config options.\n *\n * @private\n * @function Highcharts.Chart#getAxes\n * @emits Highcharts.Chart#event:afterGetAxes\n * @emits Highcharts.Chart#event:getAxes\n */\n getAxes() {\n const chart = this, options = this.options, xAxisOptions = options.xAxis = splat(options.xAxis || {}), yAxisOptions = options.yAxis = splat(options.yAxis || {});\n fireEvent(this, 'getAxes');\n // make sure the options are arrays and add some members\n xAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n axis.isX = true;\n });\n yAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n });\n // concatenate all axis options into one array\n const optionsArray = xAxisOptions.concat(yAxisOptions);\n optionsArray.forEach(function (axisOptions) {\n new Axis(chart, axisOptions); // eslint-disable-line no-new\n });\n fireEvent(this, 'afterGetAxes');\n }\n /**\n * Returns an array of all currently selected points in the chart. Points\n * can be selected by clicking or programmatically by the\n * {@link Highcharts.Point#select}\n * function.\n *\n * @sample highcharts/plotoptions/series-allowpointselect-line/\n * Get selected points\n *\n * @function Highcharts.Chart#getSelectedPoints\n *\n * @return {Array}\n * The currently selected points.\n */\n getSelectedPoints() {\n return this.series.reduce((acc, series) => {\n // For one-to-one points inspect series.data in order to retrieve\n // points outside the visible range (#6445). For grouped data,\n // inspect the generated series.points.\n series.getPointsCollection()\n .forEach((point) => {\n if (pick(point.selectedStaging, point.selected)) {\n acc.push(point);\n }\n });\n return acc;\n }, []);\n }\n /**\n * Returns an array of all currently selected series in the chart. Series\n * can be selected either programmatically by the\n * {@link Highcharts.Series#select}\n * function or by checking the checkbox next to the legend item if\n * [series.showCheckBox](https://api.highcharts.com/highcharts/plotOptions.series.showCheckbox)\n * is true.\n *\n * @sample highcharts/members/chart-getselectedseries/\n * Get selected series\n *\n * @function Highcharts.Chart#getSelectedSeries\n *\n * @return {Array}\n * The currently selected series.\n */\n getSelectedSeries() {\n return this.series.filter(function (serie) {\n return serie.selected;\n });\n }\n /**\n * Set a new title or subtitle for the chart.\n *\n * @sample highcharts/members/chart-settitle/\n * Set title text and styles\n *\n * @function Highcharts.Chart#setTitle\n *\n * @param {Highcharts.TitleOptions} [titleOptions]\n * New title options. The title text itself is set by the\n * `titleOptions.text` property.\n *\n * @param {Highcharts.SubtitleOptions} [subtitleOptions]\n * New subtitle options. The subtitle text itself is set by the\n * `subtitleOptions.text` property.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart or wait for a later call to\n * `chart.redraw()`.\n */\n setTitle(titleOptions, subtitleOptions, redraw) {\n this.applyDescription('title', titleOptions);\n this.applyDescription('subtitle', subtitleOptions);\n // The initial call also adds the caption. On update, chart.update will\n // relay to Chart.setCaption.\n this.applyDescription('caption', void 0);\n this.layOutTitles(redraw);\n }\n /**\n * Apply a title, subtitle or caption for the chart\n *\n * @private\n * @function Highcharts.Chart#applyDescription\n * @param name {string}\n * Either title, subtitle or caption\n * @param {Highcharts.TitleOptions|Highcharts.SubtitleOptions|Highcharts.CaptionOptions|undefined} explicitOptions\n * The options to set, will be merged with default options.\n */\n applyDescription(name, explicitOptions) {\n const chart = this;\n // Default style\n const style = name === 'title' ? {\n color: \"#333333\" /* Palette.neutralColor80 */,\n fontSize: this.options.isStock ? '1em' : '1.2em',\n fontWeight: 'bold'\n } : {\n // Subtitle or caption\n color: \"#666666\" /* Palette.neutralColor60 */,\n fontSize: '0.8em'\n };\n // Merge default options with explicit options\n const options = this.options[name] = merge(\n // Default styles\n (!this.styledMode && { style }), this.options[name], explicitOptions);\n let elem = this[name];\n if (elem && explicitOptions) {\n this[name] = elem = elem.destroy(); // remove old\n }\n if (options && !elem) {\n elem = this.renderer.text(options.text, 0, 0, options.useHTML)\n .attr({\n align: options.align,\n 'class': 'highcharts-' + name,\n zIndex: options.zIndex || 4\n })\n .add();\n // Update methods, shortcut to Chart.setTitle, Chart.setSubtitle and\n // Chart.setCaption\n elem.update = function (updateOptions) {\n const fn = {\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n }[name];\n chart[fn](updateOptions);\n };\n // Presentational\n if (!this.styledMode) {\n elem.css(options.style);\n }\n /**\n * The chart title. The title has an `update` method that allows\n * modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @sample highcharts/members/title-update/\n * Updating titles\n *\n * @name Highcharts.Chart#title\n * @type {Highcharts.TitleObject}\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @name Highcharts.Chart#subtitle\n * @type {Highcharts.SubtitleObject}\n */\n this[name] = elem;\n }\n }\n /**\n * Internal function to lay out the chart title, subtitle and caption, and\n * cache the full offset height for use in `getMargins`. The result is\n * stored in `this.titleOffset`.\n *\n * @private\n * @function Highcharts.Chart#layOutTitles\n *\n * @param {boolean} [redraw=true]\n * @emits Highcharts.Chart#event:afterLayOutTitles\n */\n layOutTitles(redraw) {\n const titleOffset = [0, 0, 0], renderer = this.renderer, spacingBox = this.spacingBox;\n // Lay out the title and the subtitle respectively\n ['title', 'subtitle', 'caption'].forEach(function (key) {\n const title = this[key], titleOptions = (this.options[key]), verticalAlign = titleOptions.verticalAlign || 'top', offset = key === 'title' ?\n verticalAlign === 'top' ? -3 : 0 :\n // Floating subtitle (#6574)\n verticalAlign === 'top' ? titleOffset[0] + 2 : 0;\n if (title) {\n title\n .css({\n width: (titleOptions.width ||\n spacingBox.width + (titleOptions.widthAdjust || 0)) + 'px'\n });\n const baseline = renderer.fontMetrics(title).b, \n // Skip the cache for HTML (#3481, #11666)\n height = Math.round(title.getBBox(titleOptions.useHTML).height);\n title.align(extend({\n y: verticalAlign === 'bottom' ?\n baseline :\n offset + baseline,\n height\n }, titleOptions), false, 'spacingBox');\n if (!titleOptions.floating) {\n if (verticalAlign === 'top') {\n titleOffset[0] = Math.ceil(titleOffset[0] +\n height);\n }\n else if (verticalAlign === 'bottom') {\n titleOffset[2] = Math.ceil(titleOffset[2] +\n height);\n }\n }\n }\n }, this);\n // Handle title.margin and caption.margin\n if (titleOffset[0] &&\n (this.options.title.verticalAlign || 'top') === 'top') {\n titleOffset[0] += this.options.title.margin;\n }\n if (titleOffset[2] &&\n this.options.caption.verticalAlign === 'bottom') {\n titleOffset[2] += this.options.caption.margin;\n }\n const requiresDirtyBox = (!this.titleOffset ||\n this.titleOffset.join(',') !== titleOffset.join(','));\n // Used in getMargins\n this.titleOffset = titleOffset;\n fireEvent(this, 'afterLayOutTitles');\n if (!this.isDirtyBox && requiresDirtyBox) {\n this.isDirtyBox = this.isDirtyLegend = requiresDirtyBox;\n // Redraw if necessary (#2719, #2744)\n if (this.hasRendered && pick(redraw, true) && this.isDirtyBox) {\n this.redraw();\n }\n }\n }\n /**\n * Internal function to get the available size of the container element\n *\n * @private\n * @function Highcharts.Chart#getContainerBox\n */\n getContainerBox() {\n return {\n width: getStyle(this.renderTo, 'width', true) || 0,\n height: getStyle(this.renderTo, 'height', true) || 0\n };\n }\n /**\n * Internal function to get the chart width and height according to options\n * and container size. Sets {@link Chart.chartWidth} and\n * {@link Chart.chartHeight}.\n *\n * @private\n * @function Highcharts.Chart#getChartSize\n */\n getChartSize() {\n const chart = this, optionsChart = chart.options.chart, widthOption = optionsChart.width, heightOption = optionsChart.height, containerBox = chart.getContainerBox();\n /**\n * The current pixel width of the chart.\n *\n * @name Highcharts.Chart#chartWidth\n * @type {number}\n */\n chart.chartWidth = Math.max(// #1393\n 0, widthOption || containerBox.width || 600 // #1460\n );\n /**\n * The current pixel height of the chart.\n *\n * @name Highcharts.Chart#chartHeight\n * @type {number}\n */\n chart.chartHeight = Math.max(0, relativeLength(heightOption, chart.chartWidth) ||\n (containerBox.height > 1 ? containerBox.height : 400));\n chart.containerBox = containerBox;\n }\n /**\n * If the renderTo element has no offsetWidth, most likely one or more of\n * its parents are hidden. Loop up the DOM tree to temporarily display the\n * parents, then save the original display properties, and when the true\n * size is retrieved, reset them. Used on first render and on redraws.\n *\n * @private\n * @function Highcharts.Chart#temporaryDisplay\n *\n * @param {boolean} [revert]\n * Revert to the saved original styles.\n */\n temporaryDisplay(revert) {\n let node = this.renderTo, tempStyle;\n if (!revert) {\n while (node && node.style) {\n // When rendering to a detached node, it needs to be temporarily\n // attached in order to read styling and bounding boxes (#5783,\n // #7024).\n if (!doc.body.contains(node) && !node.parentNode) {\n node.hcOrigDetached = true;\n doc.body.appendChild(node);\n }\n if (getStyle(node, 'display', false) === 'none' ||\n node.hcOricDetached) {\n node.hcOrigStyle = {\n display: node.style.display,\n height: node.style.height,\n overflow: node.style.overflow\n };\n tempStyle = {\n display: 'block',\n overflow: 'hidden'\n };\n if (node !== this.renderTo) {\n tempStyle.height = 0;\n }\n css(node, tempStyle);\n // If it still doesn't have an offset width after setting\n // display to block, it probably has an !important priority\n // #2631, 6803\n if (!node.offsetWidth) {\n node.style.setProperty('display', 'block', 'important');\n }\n }\n node = node.parentNode;\n if (node === doc.body) {\n break;\n }\n }\n }\n else {\n while (node && node.style) {\n if (node.hcOrigStyle) {\n css(node, node.hcOrigStyle);\n delete node.hcOrigStyle;\n }\n if (node.hcOrigDetached) {\n doc.body.removeChild(node);\n node.hcOrigDetached = false;\n }\n node = node.parentNode;\n }\n }\n }\n /**\n * Set the {@link Chart.container|chart container's} class name, in\n * addition to `highcharts-container`.\n *\n * @function Highcharts.Chart#setClassName\n *\n * @param {string} [className]\n * The additional class name.\n */\n setClassName(className) {\n this.container.className = 'highcharts-container ' + (className || '');\n }\n /**\n * Get the containing element, determine the size and create the inner\n * container div to hold the chart.\n *\n * @private\n * @function Highcharts.Chart#afterGetContainer\n * @emits Highcharts.Chart#event:afterGetContainer\n */\n getContainer() {\n const chart = this, options = chart.options, optionsChart = options.chart, indexAttrName = 'data-highcharts-chart', containerId = uniqueKey();\n let containerStyle, renderTo = chart.renderTo;\n if (!renderTo) {\n chart.renderTo = renderTo =\n optionsChart.renderTo;\n }\n if (isString(renderTo)) {\n chart.renderTo = renderTo =\n doc.getElementById(renderTo);\n }\n // Display an error if the renderTo is wrong\n if (!renderTo) {\n error(13, true, chart);\n }\n // If the container already holds a chart, destroy it. The check for\n // hasRendered is there because web pages that are saved to disk from\n // the browser, will preserve the data-highcharts-chart attribute and\n // the SVG contents, but not an interactive chart. So in this case,\n // charts[oldChartIndex] will point to the wrong chart if any (#2609).\n const oldChartIndex = pInt(attr(renderTo, indexAttrName));\n if (isNumber(oldChartIndex) &&\n charts[oldChartIndex] &&\n charts[oldChartIndex].hasRendered) {\n charts[oldChartIndex].destroy();\n }\n // Make a reference to the chart from the div\n attr(renderTo, indexAttrName, chart.index);\n // remove previous chart\n renderTo.innerHTML = AST.emptyHTML;\n // If the container doesn't have an offsetWidth, it has or is a child of\n // a node that has display:none. We need to temporarily move it out to a\n // visible state to determine the size, else the legend and tooltips\n // won't render properly. The skipClone option is used in sparklines as\n // a micro optimization, saving about 1-2 ms each chart.\n if (!optionsChart.skipClone && !renderTo.offsetWidth) {\n chart.temporaryDisplay();\n }\n // get the width and height\n chart.getChartSize();\n const chartWidth = chart.chartWidth;\n const chartHeight = chart.chartHeight;\n // Allow table cells and flex-boxes to shrink without the chart blocking\n // them out (#6427)\n css(renderTo, { overflow: 'hidden' });\n // Create the inner container\n if (!chart.styledMode) {\n containerStyle = extend({\n position: 'relative',\n // needed for context menu (avoidscrollbars) and content\n // overflow in IE\n overflow: 'hidden',\n width: chartWidth + 'px',\n height: chartHeight + 'px',\n textAlign: 'left',\n lineHeight: 'normal',\n zIndex: 0,\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n userSelect: 'none',\n 'touch-action': 'manipulation',\n outline: 'none'\n }, optionsChart.style || {});\n }\n /**\n * The containing HTML element of the chart. The container is\n * dynamically inserted into the element given as the `renderTo`\n * parameter in the {@link Highcharts#chart} constructor.\n *\n * @name Highcharts.Chart#container\n * @type {Highcharts.HTMLDOMElement}\n */\n const container = createElement('div', {\n id: containerId\n }, containerStyle, renderTo);\n chart.container = container;\n // cache the cursor (#1650)\n chart._cursor = container.style.cursor;\n // Initialize the renderer\n const Renderer = optionsChart.renderer || !svg ?\n RendererRegistry.getRendererType(optionsChart.renderer) :\n SVGRenderer;\n /**\n * The renderer instance of the chart. Each chart instance has only one\n * associated renderer.\n *\n * @name Highcharts.Chart#renderer\n * @type {Highcharts.SVGRenderer}\n */\n chart.renderer = new Renderer(container, chartWidth, chartHeight, void 0, optionsChart.forExport, options.exporting && options.exporting.allowHTML, chart.styledMode);\n chart.containerBox = chart.getContainerBox();\n // Set the initial animation from the options\n setAnimation(void 0, chart);\n chart.setClassName(optionsChart.className);\n if (!chart.styledMode) {\n chart.renderer.setStyle(optionsChart.style);\n }\n else {\n // Initialize definitions\n for (const key in options.defs) { // eslint-disable-line guard-for-in\n this.renderer.definition(options.defs[key]);\n }\n }\n // Add a reference to the charts index\n chart.renderer.chartIndex = chart.index;\n fireEvent(this, 'afterGetContainer');\n }\n /**\n * Calculate margins by rendering axis labels in a preliminary position.\n * Title, subtitle and legend have already been rendered at this stage, but\n * will be moved into their final positions.\n *\n * @private\n * @function Highcharts.Chart#getMargins\n * @emits Highcharts.Chart#event:getMargins\n */\n getMargins(skipAxes) {\n const { spacing, margin, titleOffset } = this;\n this.resetMargins();\n // Adjust for title and subtitle\n if (titleOffset[0] && !defined(margin[0])) {\n this.plotTop = Math.max(this.plotTop, titleOffset[0] + spacing[0]);\n }\n if (titleOffset[2] && !defined(margin[2])) {\n this.marginBottom = Math.max(this.marginBottom, titleOffset[2] + spacing[2]);\n }\n // Adjust for legend\n if (this.legend && this.legend.display) {\n this.legend.adjustMargins(margin, spacing);\n }\n fireEvent(this, 'getMargins');\n if (!skipAxes) {\n this.getAxisMargins();\n }\n }\n /**\n * @private\n * @function Highcharts.Chart#getAxisMargins\n */\n getAxisMargins() {\n const chart = this, \n // [top, right, bottom, left]\n axisOffset = chart.axisOffset = [0, 0, 0, 0], colorAxis = chart.colorAxis, margin = chart.margin, getOffset = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.getOffset();\n }\n });\n };\n // pre-render axes to get labels offset width\n if (chart.hasCartesianSeries) {\n getOffset(chart.axes);\n }\n else if (colorAxis && colorAxis.length) {\n getOffset(colorAxis);\n }\n // Add the axis offsets\n marginNames.forEach(function (m, side) {\n if (!defined(margin[side])) {\n chart[m] += axisOffset[side];\n }\n });\n chart.setChartSize();\n }\n /**\n * Reflows the chart to its container. By default, the Resize Observer is\n * attached to the chart's div which allows to reflows the chart\n * automatically to its container, as per the\n * [chart.reflow](https://api.highcharts.com/highcharts/chart.reflow)\n * option.\n *\n * @sample highcharts/chart/events-container/\n * Pop up and reflow\n *\n * @function Highcharts.Chart#reflow\n *\n * @param {global.Event} [e]\n * Event arguments. Used primarily when the function is called\n * internally as a response to window resize.\n */\n reflow(e) {\n const chart = this, optionsChart = chart.options.chart, hasUserSize = (defined(optionsChart.width) &&\n defined(optionsChart.height)), oldBox = chart.containerBox, containerBox = chart.getContainerBox();\n delete chart.pointer.chartPosition;\n // Width and height checks for display:none. Target is doc in Opera\n // and win in Firefox, Chrome and IE9.\n if (!hasUserSize &&\n !chart.isPrinting &&\n oldBox &&\n // When fired by resize observer inside hidden container\n containerBox.width) {\n if (containerBox.width !== oldBox.width ||\n containerBox.height !== oldBox.height) {\n U.clearTimeout(chart.reflowTimeout);\n // When called from window.resize, e is set, else it's called\n // directly (#2224)\n chart.reflowTimeout = syncTimeout(function () {\n // Set size, it may have been destroyed in the meantime\n // (#1257)\n if (chart.container) {\n chart.setSize(void 0, void 0, false);\n }\n }, e ? 100 : 0);\n }\n chart.containerBox = containerBox;\n }\n }\n /**\n * Toggle the event handlers necessary for auto resizing, depending on the\n * `chart.reflow` option.\n *\n * @private\n * @function Highcharts.Chart#setReflow\n */\n setReflow() {\n const chart = this;\n const runReflow = (e) => {\n var _a;\n if (((_a = chart.options) === null || _a === void 0 ? void 0 : _a.chart.reflow) && chart.hasLoaded) {\n chart.reflow(e);\n }\n };\n if (typeof ResizeObserver === 'function') {\n (new ResizeObserver(runReflow)).observe(chart.renderTo);\n // Fallback for more legacy browser versions.\n }\n else {\n const unbind = addEvent(win, 'resize', runReflow);\n addEvent(this, 'destroy', unbind);\n }\n }\n /**\n * Resize the chart to a given width and height. In order to set the width\n * only, the height argument may be skipped. To set the height only, pass\n * `undefined` for the width.\n *\n * @sample highcharts/members/chart-setsize-button/\n * Test resizing from buttons\n * @sample highcharts/members/chart-setsize-jquery-resizable/\n * Add a jQuery UI resizable\n * @sample stock/members/chart-setsize/\n * Highcharts Stock with UI resizable\n *\n * @function Highcharts.Chart#setSize\n *\n * @param {number|null} [width]\n * The new pixel width of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value (when\n * setting height only), or `null` to adapt to the width of the\n * containing element.\n *\n * @param {number|null} [height]\n * The new pixel height of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value, or `null`\n * in order to adapt to the height of the containing element.\n *\n * @param {boolean|Partial} [animation]\n * Whether and how to apply animation. When `undefined`, it applies\n * the animation that is set in the `chart.animation` option.\n *\n *\n * @emits Highcharts.Chart#event:endResize\n * @emits Highcharts.Chart#event:resize\n */\n setSize(width, height, animation) {\n const chart = this, renderer = chart.renderer;\n // Handle the isResizing counter\n chart.isResizing += 1;\n // set the animation for the current process\n setAnimation(animation, chart);\n const globalAnimation = renderer.globalAnimation;\n chart.oldChartHeight = chart.chartHeight;\n chart.oldChartWidth = chart.chartWidth;\n if (typeof width !== 'undefined') {\n chart.options.chart.width = width;\n }\n if (typeof height !== 'undefined') {\n chart.options.chart.height = height;\n }\n chart.getChartSize();\n // Resize the container with the global animation applied if enabled\n // (#2503)\n if (!chart.styledMode) {\n (globalAnimation ? animate : css)(chart.container, {\n width: chart.chartWidth + 'px',\n height: chart.chartHeight + 'px'\n }, globalAnimation);\n }\n chart.setChartSize(true);\n renderer.setSize(chart.chartWidth, chart.chartHeight, globalAnimation);\n // handle axes\n chart.axes.forEach(function (axis) {\n axis.isDirty = true;\n axis.setScale();\n });\n chart.isDirtyLegend = true; // force legend redraw\n chart.isDirtyBox = true; // force redraw of plot and chart border\n chart.layOutTitles(); // #2857\n chart.getMargins();\n chart.redraw(globalAnimation);\n chart.oldChartHeight = null;\n fireEvent(chart, 'resize');\n // Fire endResize and set isResizing back. If animation is disabled,\n // fire without delay\n syncTimeout(function () {\n if (chart) {\n fireEvent(chart, 'endResize', null, function () {\n chart.isResizing -= 1;\n });\n }\n }, animObject(globalAnimation).duration);\n }\n /**\n * Set the public chart properties. This is done before and after the\n * pre-render to determine margin sizes.\n *\n * @private\n * @function Highcharts.Chart#setChartSize\n * @emits Highcharts.Chart#event:afterSetChartSize\n */\n setChartSize(skipAxes) {\n const chart = this, inverted = chart.inverted, renderer = chart.renderer, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, optionsChart = chart.options.chart, spacing = chart.spacing, clipOffset = chart.clipOffset;\n let plotLeft, plotTop, plotWidth, plotHeight;\n /**\n * The current left position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotLeft\n * @type {number}\n */\n chart.plotLeft = plotLeft = Math.round(chart.plotLeft);\n /**\n * The current top position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotTop\n * @type {number}\n */\n chart.plotTop = plotTop = Math.round(chart.plotTop);\n /**\n * The current width of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotWidth\n * @type {number}\n */\n chart.plotWidth = plotWidth = Math.max(0, Math.round(chartWidth - plotLeft - chart.marginRight));\n /**\n * The current height of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotHeight\n * @type {number}\n */\n chart.plotHeight = plotHeight = Math.max(0, Math.round(chartHeight - plotTop - chart.marginBottom));\n chart.plotSizeX = inverted ? plotHeight : plotWidth;\n chart.plotSizeY = inverted ? plotWidth : plotHeight;\n chart.plotBorderWidth = optionsChart.plotBorderWidth || 0;\n // Set boxes used for alignment\n chart.spacingBox = renderer.spacingBox = {\n x: spacing[3],\n y: spacing[0],\n width: chartWidth - spacing[3] - spacing[1],\n height: chartHeight - spacing[0] - spacing[2]\n };\n chart.plotBox = renderer.plotBox = {\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n };\n const plotBorderWidth = 2 * Math.floor(chart.plotBorderWidth / 2), clipX = Math.ceil(Math.max(plotBorderWidth, clipOffset[3]) / 2), clipY = Math.ceil(Math.max(plotBorderWidth, clipOffset[0]) / 2);\n chart.clipBox = {\n x: clipX,\n y: clipY,\n width: Math.floor(chart.plotSizeX -\n Math.max(plotBorderWidth, clipOffset[1]) / 2 -\n clipX),\n height: Math.max(0, Math.floor(chart.plotSizeY -\n Math.max(plotBorderWidth, clipOffset[2]) / 2 -\n clipY))\n };\n if (!skipAxes) {\n chart.axes.forEach(function (axis) {\n axis.setAxisSize();\n axis.setAxisTranslation();\n });\n renderer.alignElements();\n }\n fireEvent(chart, 'afterSetChartSize', { skipAxes: skipAxes });\n }\n /**\n * Initial margins before auto size margins are applied.\n *\n * @private\n * @function Highcharts.Chart#resetMargins\n */\n resetMargins() {\n fireEvent(this, 'resetMargins');\n const chart = this, chartOptions = chart.options.chart;\n // Create margin and spacing array\n ['margin', 'spacing'].forEach(function splashArrays(target) {\n const value = chartOptions[target], values = isObject(value) ? value : [value, value, value, value];\n [\n 'Top',\n 'Right',\n 'Bottom',\n 'Left'\n ].forEach(function (sideName, side) {\n chart[target][side] = pick(chartOptions[target + sideName], values[side]);\n });\n });\n // Set margin names like chart.plotTop, chart.plotLeft,\n // chart.marginRight, chart.marginBottom.\n marginNames.forEach(function (m, side) {\n chart[m] = pick(chart.margin[side], chart.spacing[side]);\n });\n chart.axisOffset = [0, 0, 0, 0]; // top, right, bottom, left\n chart.clipOffset = [0, 0, 0, 0];\n }\n /**\n * Internal function to draw or redraw the borders and backgrounds for chart\n * and plot area.\n *\n * @private\n * @function Highcharts.Chart#drawChartBox\n * @emits Highcharts.Chart#event:afterDrawChartBox\n */\n drawChartBox() {\n const chart = this, optionsChart = chart.options.chart, renderer = chart.renderer, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, styledMode = chart.styledMode, plotBGImage = chart.plotBGImage, chartBackgroundColor = optionsChart.backgroundColor, plotBackgroundColor = optionsChart.plotBackgroundColor, plotBackgroundImage = optionsChart.plotBackgroundImage, plotLeft = chart.plotLeft, plotTop = chart.plotTop, plotWidth = chart.plotWidth, plotHeight = chart.plotHeight, plotBox = chart.plotBox, clipRect = chart.clipRect, clipBox = chart.clipBox;\n let chartBackground = chart.chartBackground, plotBackground = chart.plotBackground, plotBorder = chart.plotBorder, chartBorderWidth, mgn, bgAttr, verb = 'animate';\n // Chart area\n if (!chartBackground) {\n chart.chartBackground = chartBackground = renderer.rect()\n .addClass('highcharts-background')\n .add();\n verb = 'attr';\n }\n if (!styledMode) {\n // Presentational\n chartBorderWidth = optionsChart.borderWidth || 0;\n mgn = chartBorderWidth + (optionsChart.shadow ? 8 : 0);\n bgAttr = {\n fill: chartBackgroundColor || 'none'\n };\n if (chartBorderWidth || chartBackground['stroke-width']) { // #980\n bgAttr.stroke = optionsChart.borderColor;\n bgAttr['stroke-width'] = chartBorderWidth;\n }\n chartBackground\n .attr(bgAttr)\n .shadow(optionsChart.shadow);\n }\n else {\n chartBorderWidth = mgn = chartBackground.strokeWidth();\n }\n chartBackground[verb]({\n x: mgn / 2,\n y: mgn / 2,\n width: chartWidth - mgn - chartBorderWidth % 2,\n height: chartHeight - mgn - chartBorderWidth % 2,\n r: optionsChart.borderRadius\n });\n // Plot background\n verb = 'animate';\n if (!plotBackground) {\n verb = 'attr';\n chart.plotBackground = plotBackground = renderer.rect()\n .addClass('highcharts-plot-background')\n .add();\n }\n plotBackground[verb](plotBox);\n if (!styledMode) {\n // Presentational attributes for the background\n plotBackground\n .attr({\n fill: plotBackgroundColor || 'none'\n })\n .shadow(optionsChart.plotShadow);\n // Create the background image\n if (plotBackgroundImage) {\n if (!plotBGImage) {\n chart.plotBGImage = renderer.image(plotBackgroundImage, plotLeft, plotTop, plotWidth, plotHeight).add();\n }\n else {\n if (plotBackgroundImage !== plotBGImage.attr('href')) {\n plotBGImage.attr('href', plotBackgroundImage);\n }\n plotBGImage.animate(plotBox);\n }\n }\n }\n // Plot clip\n if (!clipRect) {\n chart.clipRect = renderer.clipRect(clipBox);\n }\n else {\n clipRect.animate({\n width: clipBox.width,\n height: clipBox.height\n });\n }\n // Plot area border\n verb = 'animate';\n if (!plotBorder) {\n verb = 'attr';\n chart.plotBorder = plotBorder = renderer.rect()\n .addClass('highcharts-plot-border')\n .attr({\n zIndex: 1 // Above the grid\n })\n .add();\n }\n if (!styledMode) {\n // Presentational\n plotBorder.attr({\n stroke: optionsChart.plotBorderColor,\n 'stroke-width': optionsChart.plotBorderWidth || 0,\n fill: 'none'\n });\n }\n plotBorder[verb](plotBorder.crisp({\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n }, -plotBorder.strokeWidth())); // #3282 plotBorder should be negative;\n // reset\n chart.isDirtyBox = false;\n fireEvent(this, 'afterDrawChartBox');\n }\n /**\n * Detect whether a certain chart property is needed based on inspecting its\n * options and series. This mainly applies to the chart.inverted property,\n * and in extensions to the chart.angular and chart.polar properties.\n *\n * @private\n * @function Highcharts.Chart#propFromSeries\n */\n propFromSeries() {\n const chart = this, optionsChart = chart.options.chart, seriesOptions = chart.options.series;\n let i, klass, value;\n /**\n * The flag is set to `true` if a series of the chart is inverted.\n *\n * @name Highcharts.Chart#inverted\n * @type {boolean|undefined}\n */\n ['inverted', 'angular', 'polar'].forEach(function (key) {\n // The default series type's class\n klass = seriesTypes[optionsChart.type];\n // Get the value from available chart-wide properties\n value =\n // It is set in the options:\n optionsChart[key] ||\n // The default series class:\n (klass && klass.prototype[key]);\n // requires it\n // 4. Check if any the chart's series require it\n i = seriesOptions && seriesOptions.length;\n while (!value && i--) {\n klass = seriesTypes[seriesOptions[i].type];\n if (klass && klass.prototype[key]) {\n value = true;\n }\n }\n // Set the chart property\n chart[key] = value;\n });\n }\n /**\n * Internal function to link two or more series together, based on the\n * `linkedTo` option. This is done from `Chart.render`, and after\n * `Chart.addSeries` and `Series.remove`.\n *\n * @private\n * @function Highcharts.Chart#linkSeries\n * @emits Highcharts.Chart#event:afterLinkSeries\n */\n linkSeries(isUpdating) {\n const chart = this, chartSeries = chart.series;\n // Reset links\n chartSeries.forEach(function (series) {\n series.linkedSeries.length = 0;\n });\n // Apply new links\n chartSeries.forEach(function (series) {\n let linkedTo = series.options.linkedTo;\n if (isString(linkedTo)) {\n if (linkedTo === ':previous') {\n linkedTo = chart.series[series.index - 1];\n }\n else {\n linkedTo = chart.get(linkedTo);\n }\n // #3341 avoid mutual linking\n if (linkedTo && linkedTo.linkedParent !== series) {\n linkedTo.linkedSeries.push(series);\n series.linkedParent = linkedTo;\n if (linkedTo.enabledDataSorting) {\n series.setDataSortingOptions();\n }\n series.visible = pick(series.options.visible, linkedTo.options.visible, series.visible); // #3879\n }\n }\n });\n fireEvent(this, 'afterLinkSeries', { isUpdating });\n }\n /**\n * Render series for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderSeries\n */\n renderSeries() {\n this.series.forEach(function (serie) {\n serie.translate();\n serie.render();\n });\n }\n /**\n * Render all graphics for the chart. Runs internally on initialization.\n *\n * @private\n * @function Highcharts.Chart#render\n */\n render() {\n const chart = this, axes = chart.axes, colorAxis = chart.colorAxis, renderer = chart.renderer, renderAxes = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.render();\n }\n });\n };\n let correction = 0; // correction for X axis labels\n // Title\n chart.setTitle();\n // Fire an event before the margins are computed. This is where the\n // legend is assigned.\n fireEvent(chart, 'beforeMargins');\n // Get stacks\n if (chart.getStacks) {\n chart.getStacks();\n }\n // Get chart margins\n chart.getMargins(true);\n chart.setChartSize();\n // Record preliminary dimensions for later comparison\n const tempWidth = chart.plotWidth;\n axes.some(function (axis) {\n if (axis.horiz &&\n axis.visible &&\n axis.options.labels.enabled &&\n axis.series.length) {\n // 21 is the most common correction for X axis labels\n correction = 21;\n return true;\n }\n });\n // use Math.max to prevent negative plotHeight\n chart.plotHeight = Math.max(chart.plotHeight - correction, 0);\n const tempHeight = chart.plotHeight;\n // Get margins by pre-rendering axes\n axes.forEach(function (axis) {\n axis.setScale();\n });\n chart.getAxisMargins();\n // If the plot area size has changed significantly, calculate tick\n // positions again\n const redoHorizontal = tempWidth / chart.plotWidth > 1.1;\n // Height is more sensitive, use lower threshold\n const redoVertical = tempHeight / chart.plotHeight > 1.05;\n if (redoHorizontal || redoVertical) {\n axes.forEach(function (axis) {\n if ((axis.horiz && redoHorizontal) ||\n (!axis.horiz && redoVertical)) {\n // update to reflect the new margins\n axis.setTickInterval(true);\n }\n });\n chart.getMargins(); // second pass to check for new labels\n }\n // Draw the borders and backgrounds\n chart.drawChartBox();\n // Axes\n if (chart.hasCartesianSeries) {\n renderAxes(axes);\n }\n else if (colorAxis && colorAxis.length) {\n renderAxes(colorAxis);\n }\n // The series\n if (!chart.seriesGroup) {\n chart.seriesGroup = renderer.g('series-group')\n .attr({ zIndex: 3 })\n .shadow(chart.options.chart.seriesGroupShadow)\n .add();\n }\n chart.renderSeries();\n // Credits\n chart.addCredits();\n // Handle responsiveness\n if (chart.setResponsive) {\n chart.setResponsive();\n }\n // Set flag\n chart.hasRendered = true;\n }\n /**\n * Set a new credits label for the chart.\n *\n * @sample highcharts/credits/credits-update/\n * Add and update credits\n *\n * @function Highcharts.Chart#addCredits\n *\n * @param {Highcharts.CreditsOptions} [credits]\n * A configuration object for the new credits.\n */\n addCredits(credits) {\n const chart = this, creds = merge(true, this.options.credits, credits);\n if (creds.enabled && !this.credits) {\n /**\n * The chart's credits label. The label has an `update` method that\n * allows setting new options as per the\n * [credits options set](https://api.highcharts.com/highcharts/credits).\n *\n * @name Highcharts.Chart#credits\n * @type {Highcharts.SVGElement}\n */\n this.credits = this.renderer.text(creds.text + (this.mapCredits || ''), 0, 0)\n .addClass('highcharts-credits')\n .on('click', function () {\n if (creds.href) {\n win.location.href = creds.href;\n }\n })\n .attr({\n align: creds.position.align,\n zIndex: 8\n });\n if (!chart.styledMode) {\n this.credits.css(creds.style);\n }\n this.credits\n .add()\n .align(creds.position);\n // Dynamically update\n this.credits.update = function (options) {\n chart.credits = chart.credits.destroy();\n chart.addCredits(options);\n };\n }\n }\n /**\n * Remove the chart and purge memory. This method is called internally\n * before adding a second chart into the same container, as well as on\n * window unload to prevent leaks.\n *\n * @sample highcharts/members/chart-destroy/\n * Destroy the chart from a button\n * @sample stock/members/chart-destroy/\n * Destroy with Highcharts Stock\n *\n * @function Highcharts.Chart#destroy\n *\n * @emits Highcharts.Chart#event:destroy\n */\n destroy() {\n const chart = this, axes = chart.axes, series = chart.series, container = chart.container, parentNode = container && container.parentNode;\n let i;\n // fire the chart.destoy event\n fireEvent(chart, 'destroy');\n // Delete the chart from charts lookup array\n if (chart.renderer.forExport) {\n erase(charts, chart); // #6569\n }\n else {\n charts[chart.index] = void 0;\n }\n H.chartCount--;\n chart.renderTo.removeAttribute('data-highcharts-chart');\n // remove events\n removeEvent(chart);\n // ==== Destroy collections:\n // Destroy axes\n i = axes.length;\n while (i--) {\n axes[i] = axes[i].destroy();\n }\n // Destroy scroller & scroller series before destroying base series\n if (this.scroller && this.scroller.destroy) {\n this.scroller.destroy();\n }\n // Destroy each series\n i = series.length;\n while (i--) {\n series[i] = series[i].destroy();\n }\n // ==== Destroy chart properties:\n [\n 'title', 'subtitle', 'chartBackground', 'plotBackground',\n 'plotBGImage', 'plotBorder', 'seriesGroup', 'clipRect', 'credits',\n 'pointer', 'rangeSelector', 'legend', 'resetZoomButton', 'tooltip',\n 'renderer'\n ].forEach(function (name) {\n const prop = chart[name];\n if (prop && prop.destroy) {\n chart[name] = prop.destroy();\n }\n });\n // Remove container and all SVG, check container as it can break in IE\n // when destroyed before finished loading\n if (container) {\n container.innerHTML = AST.emptyHTML;\n removeEvent(container);\n if (parentNode) {\n discardElement(container);\n }\n }\n // clean it all up\n objectEach(chart, function (val, key) {\n delete chart[key];\n });\n }\n /**\n * Prepare for first rendering after all data are loaded.\n *\n * @private\n * @function Highcharts.Chart#firstRender\n * @emits Highcharts.Chart#event:beforeRender\n */\n firstRender() {\n const chart = this, options = chart.options;\n // Create the container\n chart.getContainer();\n chart.resetMargins();\n chart.setChartSize();\n // Set the common chart properties (mainly invert) from the given series\n chart.propFromSeries();\n // get axes\n chart.getAxes();\n // Initialize the series\n (isArray(options.series) ? options.series : []).forEach(\n // #9680\n function (serieOptions) {\n chart.initSeries(serieOptions);\n });\n chart.linkSeries();\n chart.setSeriesData();\n // Run an event after axes and series are initialized, but before\n // render. At this stage, the series data is indexed and cached in the\n // xData and yData arrays, so we can access those before rendering. Used\n // in Highcharts Stock.\n fireEvent(chart, 'beforeRender');\n chart.render();\n chart.pointer.getChartPosition(); // #14973\n // Fire the load event if there are no external images\n if (!chart.renderer.imgCount && !chart.hasLoaded) {\n chart.onload();\n }\n // If the chart was rendered outside the top container, put it back in\n // (#3679)\n chart.temporaryDisplay(true);\n }\n /**\n * Internal function that runs on chart load, async if any images are loaded\n * in the chart. Runs the callbacks and triggers the `load` and `render`\n * events.\n *\n * @private\n * @function Highcharts.Chart#onload\n * @emits Highcharts.Chart#event:load\n * @emits Highcharts.Chart#event:render\n */\n onload() {\n // Run callbacks, first the ones registered by modules, then user's one\n this.callbacks.concat([this.callback]).forEach(function (fn) {\n // Chart destroyed in its own callback (#3600)\n if (fn && typeof this.index !== 'undefined') {\n fn.apply(this, [this]);\n }\n }, this);\n fireEvent(this, 'load');\n fireEvent(this, 'render');\n // Set up auto resize, check for not destroyed (#6068)\n if (defined(this.index)) {\n this.setReflow();\n }\n this.warnIfA11yModuleNotLoaded();\n // Don't run again\n this.hasLoaded = true;\n }\n /**\n * Emit console warning if the a11y module is not loaded.\n */\n warnIfA11yModuleNotLoaded() {\n const { options, title } = this;\n if (options && !this.accessibility) {\n // Make chart behave as an image with the title as alt text\n this.renderer.boxWrapper.attr({\n role: 'img',\n 'aria-label': ((title && title.element.textContent) || ''\n // #17753, < is not allowed in SVG attributes\n ).replace(/} [animation]\n * Whether to apply animation, and optionally animation\n * configuration. When `undefined`, it applies the animation that is\n * set in the `chart.animation` option.\n *\n * @return {Highcharts.Series}\n * The newly created series object.\n *\n * @emits Highcharts.Chart#event:addSeries\n * @emits Highcharts.Chart#event:afterAddSeries\n */\n addSeries(options, redraw, animation) {\n const chart = this;\n let series;\n if (options) { // <- not necessary\n redraw = pick(redraw, true); // defaults to true\n fireEvent(chart, 'addSeries', { options: options }, function () {\n series = chart.initSeries(options);\n chart.isDirtyLegend = true;\n chart.linkSeries();\n if (series.enabledDataSorting) {\n // We need to call `setData` after `linkSeries`\n series.setData(options.data, false);\n }\n fireEvent(chart, 'afterAddSeries', { series: series });\n if (redraw) {\n chart.redraw(animation);\n }\n });\n }\n return series;\n }\n /**\n * Add an axis to the chart after render time. Note that this method should\n * never be used when adding data synchronously at chart render time, as it\n * adds expense to the calculations and rendering. When adding data at the\n * same time as the chart is initialized, add the axis as a configuration\n * option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addAxis\n *\n * @param {Highcharts.AxisOptions} options\n * The axis options.\n *\n * @param {boolean} [isX=false]\n * Whether it is an X axis or a value axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial} [animation]\n * Whether and how to apply animation in the redraw. When\n * `undefined`, it applies the animation that is set in the\n * `chart.animation` option.\n *\n * @return {Highcharts.Axis}\n * The newly generated Axis object.\n */\n addAxis(options, isX, redraw, animation) {\n return this.createAxis(isX ? 'xAxis' : 'yAxis', { axis: options, redraw: redraw, animation: animation });\n }\n /**\n * Add a color axis to the chart after render time. Note that this method\n * should never be used when adding data synchronously at chart render time,\n * as it adds expense to the calculations and rendering. When adding data at\n * the same time as the chart is initialized, add the axis as a\n * configuration option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addColorAxis\n *\n * @param {Highcharts.ColorAxisOptions} options\n * The axis options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial} [animation]\n * Whether and how to apply animation in the redraw. When\n * `undefined`, it applies the animation that is set in the\n * `chart.animation` option.\n *\n * @return {Highcharts.Axis}\n * The newly generated Axis object.\n */\n addColorAxis(options, redraw, animation) {\n return this.createAxis('colorAxis', { axis: options, redraw: redraw, animation: animation });\n }\n /**\n * Factory for creating different axis types.\n *\n * @private\n * @function Highcharts.Chart#createAxis\n *\n * @param {string} type\n * An axis type.\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @return {Highcharts.Axis}\n * The newly generated Axis object.\n */\n createAxis(type, options) {\n const axis = new Axis(this, merge(options.axis, {\n index: this[type].length,\n isX: type === 'xAxis'\n }));\n if (pick(options.redraw, true)) {\n this.redraw(options.animation);\n }\n return axis;\n }\n /**\n * Dim the chart and show a loading text or symbol. Options for the loading\n * screen are defined in {@link\n * https://api.highcharts.com/highcharts/loading|the loading options}.\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample highcharts/members/chart-showloading/\n * Apply different text labels\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#showLoading\n *\n * @param {string} [str]\n * An optional text to show in the loading label instead of the\n * default one. The default text is set in\n * [lang.loading](https://api.highcharts.com/highcharts/lang.loading).\n */\n showLoading(str) {\n const chart = this, options = chart.options, loadingOptions = options.loading, setLoadingSize = function () {\n if (loadingDiv) {\n css(loadingDiv, {\n left: chart.plotLeft + 'px',\n top: chart.plotTop + 'px',\n width: chart.plotWidth + 'px',\n height: chart.plotHeight + 'px'\n });\n }\n };\n let loadingDiv = chart.loadingDiv, loadingSpan = chart.loadingSpan;\n // create the layer at the first call\n if (!loadingDiv) {\n chart.loadingDiv = loadingDiv = createElement('div', {\n className: 'highcharts-loading highcharts-loading-hidden'\n }, null, chart.container);\n }\n if (!loadingSpan) {\n chart.loadingSpan = loadingSpan = createElement('span', { className: 'highcharts-loading-inner' }, null, loadingDiv);\n addEvent(chart, 'redraw', setLoadingSize); // #1080\n }\n loadingDiv.className = 'highcharts-loading';\n // Update text\n AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));\n if (!chart.styledMode) {\n // Update visuals\n css(loadingDiv, extend(loadingOptions.style, {\n zIndex: 10\n }));\n css(loadingSpan, loadingOptions.labelStyle);\n // Show it\n if (!chart.loadingShown) {\n css(loadingDiv, {\n opacity: 0,\n display: ''\n });\n animate(loadingDiv, {\n opacity: loadingOptions.style.opacity || 0.5\n }, {\n duration: loadingOptions.showDuration || 0\n });\n }\n }\n chart.loadingShown = true;\n setLoadingSize();\n }\n /**\n * Hide the loading layer.\n *\n * @see Highcharts.Chart#showLoading\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#hideLoading\n */\n hideLoading() {\n const options = this.options, loadingDiv = this.loadingDiv;\n if (loadingDiv) {\n loadingDiv.className =\n 'highcharts-loading highcharts-loading-hidden';\n if (!this.styledMode) {\n animate(loadingDiv, {\n opacity: 0\n }, {\n duration: options.loading.hideDuration || 100,\n complete: function () {\n css(loadingDiv, { display: 'none' });\n }\n });\n }\n }\n this.loadingShown = false;\n }\n /**\n * A generic function to update any element of the chart. Elements can be\n * enabled and disabled, moved, re-styled, re-formatted etc.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](https://api.highcharts.com/highcharts/xAxis),\n * [yAxis](https://api.highcharts.com/highcharts/yAxis) or\n * [series](https://api.highcharts.com/highcharts/series). For these\n * collections, an `id` option is used to map the new option set to an\n * existing object. If an existing object of the same id is not found, the\n * corresponding item is updated. So for example, running `chart.update`\n * with a series item without an id, will cause the existing chart's series\n * with the same index in the series array to be updated. When the\n * `oneToOne` parameter is true, `chart.update` will also take care of\n * adding and removing items from the collection. Read more under the\n * parameter description below.\n *\n * Note that when changing series data, `chart.update` may mutate the passed\n * data options.\n *\n * See also the\n * [responsive option set](https://api.highcharts.com/highcharts/responsive).\n * Switching between `responsive.rules` basically runs `chart.update` under\n * the hood.\n *\n * @sample highcharts/members/chart-update/\n * Update chart geometry\n *\n * @function Highcharts.Chart#update\n *\n * @param {Highcharts.Options} options\n * A configuration object for the new chart options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n *\n * @param {boolean} [oneToOne=false]\n * When `true`, the `series`, `xAxis`, `yAxis` and `annotations`\n * collections will be updated one to one, and items will be either\n * added or removed to match the new updated options. For example,\n * if the chart has two series and we call `chart.update` with a\n * configuration containing three series, one will be added. If we\n * call `chart.update` with one series, one will be removed. Setting\n * an empty `series` array will remove all series, but leaving out\n * the`series` property will leave all series untouched. If the\n * series have id's, the new series options will be matched by id,\n * and the remaining ones removed.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration. When `undefined`, it applies the animation that is\n * set in the `chart.animation` option.\n *\n * @emits Highcharts.Chart#event:update\n * @emits Highcharts.Chart#event:afterUpdate\n */\n update(options, redraw, oneToOne, animation) {\n const chart = this, adders = {\n credits: 'addCredits',\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n }, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];\n let updateAllAxes, updateAllSeries, runSetSize;\n fireEvent(chart, 'update', { options: options });\n // If there are responsive rules in action, undo the responsive rules\n // before we apply the updated options and replay the responsive rules\n // on top from the chart.redraw function (#9617).\n if (!isResponsiveOptions) {\n chart.setResponsive(false, true);\n }\n options = cleanRecursively(options, chart.options);\n chart.userOptions = merge(chart.userOptions, options);\n // If the top-level chart option is present, some special updates are\n // required\n const optionsChart = options.chart;\n if (optionsChart) {\n merge(true, chart.options.chart, optionsChart);\n // Setter function\n if ('className' in optionsChart) {\n chart.setClassName(optionsChart.className);\n }\n if ('inverted' in optionsChart ||\n 'polar' in optionsChart ||\n 'type' in optionsChart) {\n // Parse options.chart.inverted and options.chart.polar together\n // with the available series.\n chart.propFromSeries();\n updateAllAxes = true;\n }\n if ('alignTicks' in optionsChart) { // #6452\n updateAllAxes = true;\n }\n if ('events' in optionsChart) {\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n }\n objectEach(optionsChart, function (val, key) {\n if (chart.propsRequireUpdateSeries.indexOf('chart.' + key) !==\n -1) {\n updateAllSeries = true;\n }\n // Only dirty box\n if (chart.propsRequireDirtyBox.indexOf(key) !== -1) {\n chart.isDirtyBox = true;\n }\n // Chart setSize\n if (chart.propsRequireReflow.indexOf(key) !== -1) {\n if (isResponsiveOptions) {\n chart.isDirtyBox = true;\n }\n else {\n runSetSize = true;\n }\n }\n });\n if (!chart.styledMode && optionsChart.style) {\n chart.renderer.setStyle(chart.options.chart.style || {});\n }\n }\n // Moved up, because tooltip needs updated plotOptions (#6218)\n if (!chart.styledMode && options.colors) {\n this.options.colors = options.colors;\n }\n if (options.time) {\n // Maintaining legacy global time. If the chart is instanciated\n // first with global time, then updated with time options, we need\n // to create a new Time instance to avoid mutating the global time\n // (#10536).\n if (this.time === defaultTime) {\n this.time = new Time(options.time);\n }\n // If we're updating, the time class is different from other chart\n // classes (chart.legend, chart.tooltip etc) in that it doesn't know\n // about the chart. The other chart[something].update functions also\n // set the chart.options[something]. For the time class however we\n // need to update the chart options separately. #14230.\n merge(true, chart.options.time, options.time);\n }\n // Some option stuctures correspond one-to-one to chart objects that\n // have update methods, for example\n // options.credits => chart.credits\n // options.legend => chart.legend\n // options.title => chart.title\n // options.tooltip => chart.tooltip\n // options.subtitle => chart.subtitle\n // options.mapNavigation => chart.mapNavigation\n // options.navigator => chart.navigator\n // options.scrollbar => chart.scrollbar\n objectEach(options, function (val, key) {\n if (chart[key] &&\n typeof chart[key].update === 'function') {\n chart[key].update(val, false);\n // If a one-to-one object does not exist, look for an adder function\n }\n else if (typeof chart[adders[key]] === 'function') {\n chart[adders[key]](val);\n // Else, just merge the options. For nodes like loading, noData,\n // plotOptions\n }\n else if (key !== 'colors' &&\n chart.collectionsWithUpdate.indexOf(key) === -1) {\n merge(true, chart.options[key], options[key]);\n }\n if (key !== 'chart' &&\n chart.propsRequireUpdateSeries.indexOf(key) !== -1) {\n updateAllSeries = true;\n }\n });\n // Setters for collections. For axes and series, each item is referred\n // by an id. If the id is not found, it defaults to the corresponding\n // item in the collection, so setting one series without an id, will\n // update the first series in the chart. Setting two series without\n // an id will update the first and the second respectively (#6019)\n // chart.update and responsive.\n this.collectionsWithUpdate.forEach(function (coll) {\n let indexMap;\n if (options[coll]) {\n // In stock charts, the navigator series are also part of the\n // chart.series array, but those series should not be handled\n // here (#8196) and neither should the navigator axis (#9671).\n indexMap = [];\n chart[coll].forEach(function (s, i) {\n if (!s.options.isInternal) {\n indexMap.push(pick(s.options.index, i));\n }\n });\n splat(options[coll]).forEach(function (newOptions, i) {\n const hasId = defined(newOptions.id);\n let item;\n // Match by id\n if (hasId) {\n item = chart.get(newOptions.id);\n }\n // No match by id found, match by index instead\n if (!item && chart[coll]) {\n item = chart[coll][indexMap ? indexMap[i] : i];\n // Check if we grabbed an item with an exising but\n // different id (#13541)\n if (item && hasId && defined(item.options.id)) {\n item = void 0;\n }\n }\n if (item && item.coll === coll) {\n item.update(newOptions, false);\n if (oneToOne) {\n item.touched = true;\n }\n }\n // If oneToOne and no matching item is found, add one\n if (!item && oneToOne && chart.collectionsWithInit[coll]) {\n chart.collectionsWithInit[coll][0].apply(chart, \n // [newOptions, ...extraArguments, redraw=false]\n [\n newOptions\n ].concat(\n // Not all initializers require extra args\n chart.collectionsWithInit[coll][1] || []).concat([\n false\n ])).touched = true;\n }\n });\n // Add items for removal\n if (oneToOne) {\n chart[coll].forEach(function (item) {\n if (!item.touched && !item.options.isInternal) {\n itemsForRemoval.push(item);\n }\n else {\n delete item.touched;\n }\n });\n }\n }\n });\n itemsForRemoval.forEach(function (item) {\n if (item.chart && item.remove) { // #9097, avoid removing twice\n item.remove(false);\n }\n });\n if (updateAllAxes) {\n chart.axes.forEach(function (axis) {\n axis.update({}, false);\n });\n }\n // Certain options require the whole series structure to be thrown away\n // and rebuilt\n if (updateAllSeries) {\n chart.getSeriesOrderByLinks().forEach(function (series) {\n // Avoid removed navigator series\n if (series.chart) {\n series.update({}, false);\n }\n }, this);\n }\n // Update size. Redraw is forced.\n const newWidth = optionsChart && optionsChart.width;\n const newHeight = optionsChart && (isString(optionsChart.height) ?\n relativeLength(optionsChart.height, newWidth || chart.chartWidth) :\n optionsChart.height);\n if (\n // In this case, run chart.setSize with newWidth and newHeight which\n // are undefined, only for reflowing chart elements because margin\n // or spacing has been set (#8190)\n runSetSize ||\n // In this case, the size is actually set\n (isNumber(newWidth) && newWidth !== chart.chartWidth) ||\n (isNumber(newHeight) && newHeight !== chart.chartHeight)) {\n chart.setSize(newWidth, newHeight, animation);\n }\n else if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n fireEvent(chart, 'afterUpdate', {\n options: options,\n redraw: redraw,\n animation: animation\n });\n }\n /**\n * Shortcut to set the subtitle options. This can also be done from {@link\n * Chart#update} or {@link Chart#setTitle}.\n *\n * @function Highcharts.Chart#setSubtitle\n *\n * @param {Highcharts.SubtitleOptions} options\n * New subtitle options. The subtitle text itself is set by the\n * `options.text` property.\n */\n setSubtitle(options, redraw) {\n this.applyDescription('subtitle', options);\n this.layOutTitles(redraw);\n }\n /**\n * Set the caption options. This can also be done from {@link\n * Chart#update}.\n *\n * @function Highcharts.Chart#setCaption\n *\n * @param {Highcharts.CaptionOptions} options\n * New caption options. The caption text itself is set by the\n * `options.text` property.\n */\n setCaption(options, redraw) {\n this.applyDescription('caption', options);\n this.layOutTitles(redraw);\n }\n /**\n * Display the zoom button, so users can reset zoom to the default view\n * settings.\n *\n * @function Highcharts.Chart#showResetZoom\n *\n * @emits Highcharts.Chart#event:afterShowResetZoom\n * @emits Highcharts.Chart#event:beforeShowResetZoom\n */\n showResetZoom() {\n const chart = this, lang = defaultOptions.lang, btnOptions = chart.options.chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||\n btnOptions.relativeTo === 'spacingBox' ?\n null :\n 'scrollablePlotBox');\n /**\n * @private\n */\n function zoomOut() {\n chart.zoomOut();\n }\n fireEvent(this, 'beforeShowResetZoom', null, function () {\n chart.resetZoomButton = chart.renderer\n .button(lang.resetZoom, null, null, zoomOut, theme)\n .attr({\n align: btnOptions.position.align,\n title: lang.resetZoomTitle\n })\n .addClass('highcharts-reset-zoom')\n .add()\n .align(btnOptions.position, false, alignTo);\n });\n fireEvent(this, 'afterShowResetZoom');\n }\n /**\n * Zoom the chart out after a user has zoomed in. See also\n * [Axis.setExtremes](/class-reference/Highcharts.Axis#setExtremes).\n *\n * @function Highcharts.Chart#zoomOut\n *\n * @emits Highcharts.Chart#event:selection\n */\n zoomOut() {\n fireEvent(this, 'selection', { resetSelection: true }, this.zoom);\n }\n /**\n * Zoom into a given portion of the chart given by axis coordinates.\n *\n * @private\n * @function Highcharts.Chart#zoom\n * @param {Highcharts.SelectEventObject} event\n */\n zoom(event) {\n const chart = this, pointer = chart.pointer;\n let displayButton = false, hasZoomed;\n // If zoom is called with no arguments, reset the axes\n if (!event || event.resetSelection) {\n chart.axes.forEach(function (axis) {\n hasZoomed = axis.zoom();\n });\n pointer.initiated = false; // #6804\n }\n else { // else, zoom in on all axes\n event.xAxis.concat(event.yAxis).forEach(function (axisData) {\n const axis = axisData.axis, isXAxis = axis.isXAxis;\n // don't zoom more than minRange\n if (pointer[isXAxis ? 'zoomX' : 'zoomY'] &&\n (defined(pointer.mouseDownX) &&\n defined(pointer.mouseDownY) &&\n chart.isInsidePlot(pointer.mouseDownX - chart.plotLeft, pointer.mouseDownY - chart.plotTop, { axis })) || !defined(chart.inverted ? pointer.mouseDownX : pointer.mouseDownY)) {\n hasZoomed = axis.zoom(axisData.min, axisData.max);\n if (axis.displayBtn) {\n displayButton = true;\n }\n }\n });\n }\n // Show or hide the Reset zoom button\n const resetZoomButton = chart.resetZoomButton;\n if (displayButton && !resetZoomButton) {\n chart.showResetZoom();\n }\n else if (!displayButton && isObject(resetZoomButton)) {\n chart.resetZoomButton = resetZoomButton.destroy();\n }\n // Redraw\n if (hasZoomed) {\n chart.redraw(pick(chart.options.chart.animation, event && event.animation, chart.pointCount < 100));\n }\n }\n /**\n * Pan the chart by dragging the mouse across the pane. This function is\n * called on mouse move, and the distance to pan is computed from chartX\n * compared to the first chartX position in the dragging operation.\n *\n * @private\n * @function Highcharts.Chart#pan\n * @param {Highcharts.PointerEventObject} e\n * @param {string} panning\n */\n pan(e, panning) {\n const chart = this, hoverPoints = chart.hoverPoints, panningOptions = (typeof panning === 'object' ?\n panning :\n {\n enabled: panning,\n type: 'x'\n }), chartOptions = chart.options.chart;\n if (chartOptions && chartOptions.panning) {\n chartOptions.panning = panningOptions;\n }\n const type = panningOptions.type;\n let doRedraw;\n fireEvent(this, 'pan', { originalEvent: e }, function () {\n // remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n let axes = chart.xAxis;\n if (type === 'xy') {\n axes = axes.concat(chart.yAxis);\n }\n else if (type === 'y') {\n axes = chart.yAxis;\n }\n const nextMousePos = {};\n axes.forEach(function (axis) {\n if (!axis.options.panningEnabled || axis.options.isInternal) {\n return;\n }\n const horiz = axis.horiz, mousePos = e[horiz ? 'chartX' : 'chartY'], mouseDown = horiz ? 'mouseDownX' : 'mouseDownY', startPos = chart[mouseDown], halfPointRange = axis.minPointOffset || 0, pointRangeDirection = (axis.reversed && !chart.inverted) ||\n (!axis.reversed && chart.inverted) ?\n -1 :\n 1, extremes = axis.getExtremes(), panMin = axis.toValue(startPos - mousePos, true) +\n halfPointRange * pointRangeDirection, panMax = axis.toValue(startPos + axis.len - mousePos, true) -\n ((halfPointRange * pointRangeDirection) ||\n (axis.isXAxis && axis.pointRangePadding) ||\n 0), flipped = panMax < panMin, hasVerticalPanning = axis.hasVerticalPanning();\n let newMin = flipped ? panMax : panMin, newMax = flipped ? panMin : panMax, panningState = axis.panningState, spill;\n // General calculations of panning state.\n // This is related to using vertical panning. (#11315).\n if (hasVerticalPanning &&\n !axis.isXAxis && (!panningState || panningState.isDirty)) {\n axis.series.forEach(function (series) {\n const processedData = series.getProcessedData(true), dataExtremes = series.getExtremes(processedData.yData, true);\n if (!panningState) {\n panningState = {\n startMin: Number.MAX_VALUE,\n startMax: -Number.MAX_VALUE\n };\n }\n if (isNumber(dataExtremes.dataMin) &&\n isNumber(dataExtremes.dataMax)) {\n panningState.startMin = Math.min(pick(series.options.threshold, Infinity), dataExtremes.dataMin, panningState.startMin);\n panningState.startMax = Math.max(pick(series.options.threshold, -Infinity), dataExtremes.dataMax, panningState.startMax);\n }\n });\n }\n const paddedMin = Math.min(pick(panningState && panningState.startMin, extremes.dataMin), halfPointRange ?\n extremes.min :\n axis.toValue(axis.toPixels(extremes.min) -\n axis.minPixelPadding));\n const paddedMax = Math.max(pick(panningState && panningState.startMax, extremes.dataMax), halfPointRange ?\n extremes.max :\n axis.toValue(axis.toPixels(extremes.max) +\n axis.minPixelPadding));\n axis.panningState = panningState;\n // It is not necessary to calculate extremes on ordinal axis,\n // because they are already calculated, so we don't want to\n // override them.\n if (!axis.isOrdinal) {\n // If the new range spills over, either to the min or max,\n // adjust the new range.\n spill = paddedMin - newMin;\n if (spill > 0) {\n newMax += spill;\n newMin = paddedMin;\n }\n spill = newMax - paddedMax;\n if (spill > 0) {\n newMax = paddedMax;\n newMin -= spill;\n }\n // Set new extremes if they are actually new\n if (axis.series.length &&\n newMin !== extremes.min &&\n newMax !== extremes.max &&\n newMin >= paddedMin &&\n newMax <= paddedMax) {\n axis.setExtremes(newMin, newMax, false, false, { trigger: 'pan' });\n if (!chart.resetZoomButton &&\n // Show reset zoom button only when both newMin and\n // newMax values are between padded axis range.\n newMin !== paddedMin &&\n newMax !== paddedMax &&\n type.match('y')) {\n chart.showResetZoom();\n axis.displayBtn = false;\n }\n doRedraw = true;\n }\n // set new reference for next run:\n nextMousePos[mouseDown] = mousePos;\n }\n });\n objectEach(nextMousePos, (pos, down) => {\n chart[down] = pos;\n });\n if (doRedraw) {\n chart.redraw(false);\n }\n css(chart.container, { cursor: 'move' });\n });\n }\n }\n extend(Chart.prototype, {\n // Hook for adding callbacks in modules\n callbacks: [],\n /**\n * These collections (arrays) implement `Chart.addSomethig` method used in\n * chart.update() to create new object in the collection. Equivalent for\n * deleting is resolved by simple `Somethig.remove()`.\n *\n * Note: We need to define these references after initializers are bound to\n * chart's prototype.\n *\n * @private\n */\n collectionsWithInit: {\n // collectionName: [ initializingMethod, [extraArguments] ]\n xAxis: [Chart.prototype.addAxis, [true]],\n yAxis: [Chart.prototype.addAxis, [false]],\n series: [Chart.prototype.addSeries]\n },\n /**\n * These collections (arrays) implement update() methods with support for\n * one-to-one option.\n * @private\n */\n collectionsWithUpdate: [\n 'xAxis',\n 'yAxis',\n 'series'\n ],\n /**\n * These properties cause isDirtyBox to be set to true when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireDirtyBox: [\n 'backgroundColor',\n 'borderColor',\n 'borderWidth',\n 'borderRadius',\n 'plotBackgroundColor',\n 'plotBackgroundImage',\n 'plotBorderColor',\n 'plotBorderWidth',\n 'plotShadow',\n 'shadow'\n ],\n /**\n * These properties require a full reflow of chart elements, best\n * implemented through running `Chart.setSize` internally (#8190).\n * @private\n */\n propsRequireReflow: [\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'spacing',\n 'spacingTop',\n 'spacingRight',\n 'spacingBottom',\n 'spacingLeft'\n ],\n /**\n * These properties cause all series to be updated when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireUpdateSeries: [\n 'chart.inverted',\n 'chart.polar',\n 'chart.ignoreHiddenSeries',\n 'chart.type',\n 'colors',\n 'plotOptions',\n 'time',\n 'tooltip'\n ]\n });\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback for chart constructors.\n *\n * @callback Highcharts.ChartCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * Created chart.\n */\n /**\n * Format a number and return a string based on input settings.\n *\n * @callback Highcharts.NumberFormatterCallbackFunction\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string} The formatted number.\n */\n /**\n * The chart title. The title has an `update` method that allows modifying the\n * options directly or indirectly via `chart.update`.\n *\n * @interface Highcharts.TitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the title.\n *\n * @function Highcharts.TitleObject#update\n *\n * @param {Highcharts.TitleOptions} titleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the title is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.SubtitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the subtitle.\n *\n * @function Highcharts.SubtitleObject#update\n *\n * @param {Highcharts.SubtitleOptions} subtitleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the subtitle is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * The chart caption. The caption has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.CaptionObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the caption.\n *\n * @function Highcharts.CaptionObject#update\n *\n * @param {Highcharts.CaptionOptions} captionOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the caption is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * @interface Highcharts.ChartIsInsideOptionsObject\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#axis\n * @type {Highcharts.Axis|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreX\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreY\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#paneCoordinates\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#series\n * @type {Highcharts.Series|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#visiblePlotOnly\n * @type {boolean|undefined}\n */\n ''; // keeps doclets above in JS file\n\n return Chart;\n });\n _registerModule(_modules, 'Core/Legend/LegendSymbol.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { extend, merge, pick } = U;\n /* *\n *\n * Namespace\n *\n * */\n var LegendSymbol;\n (function (LegendSymbol) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.lineMarker\n *\n * @param {Highcharts.Legend} legend\n * The legend object.\n */\n function lineMarker(legend, item) {\n const legendItem = this.legendItem = this.legendItem || {}, options = this.options, symbolWidth = legend.symbolWidth, symbolHeight = legend.symbolHeight, generalRadius = symbolHeight / 2, renderer = this.chart.renderer, legendItemGroup = legendItem.group, verticalCenter = legend.baseline -\n Math.round(legend.fontMetrics.b * 0.3);\n let attr = {}, legendSymbol, markerOptions = options.marker, lineSizer = 0;\n // Draw the line\n if (!this.chart.styledMode) {\n attr = {\n 'stroke-width': Math.min(options.lineWidth || 0, 24)\n };\n if (options.dashStyle) {\n attr.dashstyle = options.dashStyle;\n }\n else if (options.linecap !== 'square') {\n attr['stroke-linecap'] = 'round';\n }\n }\n legendItem.line = renderer\n .path()\n .addClass('highcharts-graph')\n .attr(attr)\n .add(legendItemGroup);\n if (attr['stroke-linecap']) {\n lineSizer = Math.min(legendItem.line.strokeWidth(), symbolWidth) / 2;\n }\n if (symbolWidth) {\n legendItem.line\n .attr({\n d: [\n ['M', lineSizer, verticalCenter],\n ['L', symbolWidth - lineSizer, verticalCenter]\n ]\n });\n }\n // Draw the marker\n if (markerOptions && markerOptions.enabled !== false && symbolWidth) {\n // Do not allow the marker to be larger than the symbolHeight\n let radius = Math.min(pick(markerOptions.radius, generalRadius), generalRadius);\n // Restrict symbol markers size\n if (this.symbol.indexOf('url') === 0) {\n markerOptions = merge(markerOptions, {\n width: symbolHeight,\n height: symbolHeight\n });\n radius = 0;\n }\n legendItem.symbol = legendSymbol = renderer\n .symbol(this.symbol, (symbolWidth / 2) - radius, verticalCenter - radius, 2 * radius, 2 * radius, extend({ context: 'legend' }, markerOptions))\n .addClass('highcharts-point')\n .add(legendItemGroup);\n legendSymbol.isMarker = true;\n }\n }\n LegendSymbol.lineMarker = lineMarker;\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.rectangle\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Point|Highcharts.Series} item\n * The series (this) or point\n */\n function rectangle(legend, item) {\n const legendItem = item.legendItem || {}, options = legend.options, symbolHeight = legend.symbolHeight, square = options.squareSymbol, symbolWidth = square ? symbolHeight : legend.symbolWidth;\n legendItem.symbol = this.chart.renderer\n .rect(square ? (legend.symbolWidth - symbolHeight) / 2 : 0, legend.baseline - symbolHeight + 1, // #3988\n symbolWidth, symbolHeight, pick(legend.options.symbolRadius, symbolHeight / 2))\n .addClass('highcharts-point')\n .attr({\n zIndex: 3\n })\n .add(legendItem.group);\n }\n LegendSymbol.rectangle = rectangle;\n })(LegendSymbol || (LegendSymbol = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LegendSymbol;\n });\n _registerModule(_modules, 'Core/Series/SeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n const seriesDefaults = {\n // base series options\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * Pixel width of the graph line.\n *\n * @see In styled mode, the line stroke-width can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-general/\n * On all series\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-specific/\n * On one single series\n *\n * @product highcharts highstock\n */\n lineWidth: 1,\n /**\n * For some series, there is a limit that shuts down animation\n * by default when the total number of points in the chart is too high.\n * For example, for a column chart and its derivatives, animation does\n * not run if there is more than 250 points totally. To disable this\n * cap, set `animationLimit` to `Infinity`. This option works if animation\n * is fired on individual points, not on a group of points like e.g. during\n * the initial animation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animationlimit/\n * Animation limit on updating individual points\n *\n * @type {number}\n * @apioption plotOptions.series.animationLimit\n */\n /**\n * Allow this series' points to be selected by clicking on the graphic\n * (columns, point markers, pie slices, map areas etc).\n *\n * The selected points can be handled by point select and unselect\n * events, or collectively by the [getSelectedPoints\n * ](/class-reference/Highcharts.Chart#getSelectedPoints) function.\n *\n * And alternative way of selecting points is through dragging.\n *\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-pie/\n * Pie\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @since 1.2.0\n *\n * @private\n */\n allowPointSelect: false,\n /**\n * When true, each point or column edge is rounded to its nearest pixel\n * in order to render sharp on screen. In some cases, when there are a\n * lot of densely packed columns, this leads to visible difference\n * in column widths or distance between columns. In these cases,\n * setting `crisp` to `false` may look better, even though each column\n * is rendered blurry.\n *\n * @sample {highcharts} highcharts/plotoptions/column-crisp-false/\n * Crisp is false\n *\n * @since 5.0.10\n * @product highcharts highstock gantt\n *\n * @private\n */\n crisp: true,\n /**\n * If true, a checkbox is displayed next to the legend item to allow\n * selecting the series. The state of the checkbox is determined by\n * the `selected` option.\n *\n * @productdesc {highmaps}\n * Note that if a `colorAxis` is defined, the color axis is represented\n * in the legend, not the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showcheckbox-true/\n * Show select box\n *\n * @since 1.2.0\n *\n * @private\n */\n showCheckbox: false,\n /**\n * Enable or disable the initial animation when a series is displayed.\n * The animation can also be set as a configuration object. Please\n * note that this option only applies to the initial animation of the\n * series itself. For other animations, see [chart.animation](\n * #chart.animation) and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds. (Defaults to\n * `1000`)\n *\n * - `easing`: Can be a string reference to an easing function set on\n * the `Math` object or a function. See the _Custom easing function_\n * demo below. (Defaults to `easeInOutSine`)\n *\n * Due to poor performance, animation is disabled in old IE browsers\n * for several chart types.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animation-disabled/\n * Animation disabled\n * @sample {highcharts} highcharts/plotoptions/series-animation-slower/\n * Slower animation\n * @sample {highcharts} highcharts/plotoptions/series-animation-easing/\n * Custom easing function\n * @sample {highstock} stock/plotoptions/animation-slower/\n * Slower animation\n * @sample {highstock} stock/plotoptions/animation-easing/\n * Custom easing function\n * @sample {highmaps} maps/plotoptions/series-animation-true/\n * Animation enabled on map series\n * @sample {highmaps} maps/plotoptions/mapbubble-animation-false/\n * Disabled on mapbubble series\n *\n * @type {boolean|Highcharts.AnimationOptionsObject}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n *\n * @private\n */\n animation: {\n /** @ignore-option */\n duration: 1000\n },\n /**\n * An additional class name to apply to the series' graphical elements.\n * This option does not replace default class names of the graphical\n * element. Changes to the series' color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.className\n */\n /**\n * Disable this option to allow series rendering in the whole plotting\n * area.\n *\n * **Note:** Clipping should be always enabled when\n * [chart.zoomType](#chart.zoomType) is set\n *\n * @sample {highcharts} highcharts/plotoptions/series-clip/\n * Disabled clipping\n *\n * @default true\n * @type {boolean}\n * @since 3.0.0\n * @apioption plotOptions.series.clip\n */\n /**\n * The main color of the series. In line type series it applies to the\n * line and the point markers unless otherwise specified. In bar type\n * series it applies to the bars unless a color is specified per point.\n * The default value is pulled from the `options.colors` array.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @productdesc {highmaps}\n * In maps, the series color is rarely used, as most choropleth maps use\n * the color to denote the value of each point. The series color can\n * however be used in a map with multiple series holding categorized\n * data.\n *\n * @sample {highcharts} highcharts/plotoptions/series-color-general/\n * General plot option\n * @sample {highcharts} highcharts/plotoptions/series-color-specific/\n * One specific series\n * @sample {highcharts} highcharts/plotoptions/series-color-area/\n * Area color\n * @sample {highcharts} highcharts/series/infographic/\n * Pattern fill\n * @sample {highmaps} maps/demo/category-map/\n * Category map by multiple series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.color\n */\n /**\n * Styled mode only. A specific color index to use for the series, so its\n * graphic representations are given the class name `highcharts-color-{n}`.\n *\n * Since v11, CSS variables on the form `--highcharts-color-{n}` make\n * changing the color scheme very convenient.\n *\n * @sample {highcharts} highcharts/css/colorindex/ Series and point color\n * index\n *\n * @type {number}\n * @since 5.0.0\n * @apioption plotOptions.series.colorIndex\n */\n /**\n * Whether to connect a graph line across null points, or render a gap\n * between the two points on either side of the null.\n *\n * In stacked area chart, if `connectNulls` is set to true,\n * null points are interpreted as 0.\n *\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.connectNulls\n */\n /**\n * You can set the cursor to \"pointer\" if you have click events attached\n * to the series, to signal to the user that the points and lines can\n * be clicked.\n *\n * In styled mode, the series cursor can be set with the same classes\n * as listed under [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-cursor-line/\n * On line graph\n * @sample {highcharts} highcharts/plotoptions/series-cursor-column/\n * On columns\n * @sample {highcharts} highcharts/plotoptions/series-cursor-scatter/\n * On scatter markers\n * @sample {highstock} stock/plotoptions/cursor/\n * Pointer on a line graph\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @type {string|Highcharts.CursorValue}\n * @apioption plotOptions.series.cursor\n */\n /**\n * A reserved subspace to store options and values for customized\n * functionality. Here you can add additional data for your own event\n * callbacks and formatter callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption plotOptions.series.custom\n */\n /**\n * Name of the dash style to use for the graph, or for some series types\n * the outline of each shape.\n *\n * In styled mode, the\n * [stroke dash-array](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/series-dashstyle/)\n * can be set with the same classes as listed under\n * [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle/\n * Chart suitable for printing in black and white\n * @sample {highstock} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} maps/plotoptions/series-dashstyle/\n * Dotted borders on a map\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 2.1\n * @apioption plotOptions.series.dashStyle\n */\n /**\n * A description of the series to add to the screen reader information\n * about the series.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption plotOptions.series.description\n */\n /**\n * Options for the series data sorting.\n *\n * @type {Highcharts.DataSortingOptionsObject}\n * @since 8.0.0\n * @product highcharts highstock\n * @apioption plotOptions.series.dataSorting\n */\n /**\n * Enable or disable data sorting for the series. Use [xAxis.reversed](\n * #xAxis.reversed) to change the sorting order.\n *\n * @sample {highcharts} highcharts/datasorting/animation/\n * Data sorting in scatter-3d\n * @sample {highcharts} highcharts/datasorting/labels-animation/\n * Axis labels animation\n * @sample {highcharts} highcharts/datasorting/dependent-sorting/\n * Dependent series sorting\n * @sample {highcharts} highcharts/datasorting/independent-sorting/\n * Independent series sorting\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.enabled\n */\n /**\n * Whether to allow matching points by name in an update. If this option\n * is disabled, points will be matched by order.\n *\n * @sample {highcharts} highcharts/datasorting/match-by-name/\n * Enabled match by name\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.matchByName\n */\n /**\n * Determines what data value should be used to sort by.\n *\n * @sample {highcharts} highcharts/datasorting/sort-key/\n * Sort key as `z` value\n *\n * @type {string}\n * @since 8.0.0\n * @default y\n * @apioption plotOptions.series.dataSorting.sortKey\n */\n /**\n * Enable or disable the mouse tracking for a specific series. This\n * includes point tooltips and click events on graphs and points. For\n * large datasets it improves performance.\n *\n * @sample {highcharts} highcharts/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n * @sample {highmaps} maps/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.enableMouseTracking\n */\n /**\n * Whether to use the Y extremes of the total chart width or only the\n * zoomed area when zooming in on parts of the X axis. By default, the\n * Y axis adjusts to the min and max of the visible data. Cartesian\n * series only.\n *\n * @type {boolean}\n * @default false\n * @since 4.1.6\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.getExtremesFromAll\n */\n /**\n * An array specifying which option maps to which key in the data point\n * array. This makes it convenient to work with unstructured data arrays\n * from different sources.\n *\n * @see [series.data](#series.line.data)\n *\n * @sample {highcharts|highstock} highcharts/series/data-keys/\n * An extended data array with keys\n * @sample {highcharts|highstock} highcharts/series/data-nested-keys/\n * Nested keys used to access object properties\n *\n * @type {Array}\n * @since 4.1.6\n * @apioption plotOptions.series.keys\n */\n /**\n * The line cap used for line ends and line joins on the graph.\n *\n * @sample highcharts/series-line/linecap/\n * Line cap comparison\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @product highcharts highstock\n * @apioption plotOptions.series.linecap\n */\n /**\n * The [id](#series.id) of another series to link to. Additionally,\n * the value can be \":previous\" to link to the previous series. When\n * two series are linked, only the first one appears in the legend.\n * Toggling the visibility of this also toggles the linked series.\n *\n * If master series uses data sorting and linked series does not have\n * its own sorting definition, the linked series will be sorted in the\n * same order as the master one.\n *\n * @sample {highcharts|highstock} highcharts/demo/arearange-line/\n * Linked series\n *\n * @type {string}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.linkedTo\n */\n /**\n * Options for the corresponding navigator series if `showInNavigator`\n * is `true` for this series. Available options are the same as any\n * series, documented at [plotOptions](#plotOptions.series) and\n * [series](#series).\n *\n * These options are merged with options in [navigator.series](\n * #navigator.series), and will take precedence if the same option is\n * defined both places.\n *\n * @see [navigator.series](#navigator.series)\n *\n * @type {Highcharts.PlotSeriesOptions}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.navigatorOptions\n */\n /**\n * The color for the parts of the graph or points that are below the\n * [threshold](#plotOptions.series.threshold). Note that `zones` takes\n * precedence over the negative color. Using `negativeColor` is\n * equivalent to applying a zone with value of 0.\n *\n * @see In styled mode, a negative color is applied by setting this option\n * to `true` combined with the `.highcharts-negative` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highcharts} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Styled mode\n * @sample {highstock} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highstock} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highmaps} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highmaps} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @apioption plotOptions.series.negativeColor\n */\n /**\n * Same as\n * [accessibility.series.descriptionFormatter](#accessibility.series.descriptionFormatter),\n * but for an individual series. Overrides the chart wide configuration.\n *\n * @type {Function}\n * @since 5.0.12\n * @apioption plotOptions.series.pointDescriptionFormatter\n */\n /**\n * If no x values are given for the points in a series, `pointInterval`\n * defines the interval of the x values. For example, if a series\n * contains one value every decade starting from year 0, set\n * `pointInterval` to `10`. In true `datetime` axes, the `pointInterval`\n * is set in milliseconds.\n *\n * It can be also be combined with `pointIntervalUnit` to draw irregular\n * time intervals.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point, and the `pointInterval` is added x times to the `pointStart`\n * setting.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime X axis\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 1\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointInterval\n */\n /**\n * On datetime series, this allows for setting the\n * [pointInterval](#plotOptions.series.pointInterval) to irregular time\n * units, `day`, `month` and `year`. A day is usually the same as 24\n * hours, but `pointIntervalUnit` also takes the DST crossover into\n * consideration when dealing with local time. Combine this option with\n * `pointInterval` to draw weeks, quarters, 6 months, 10 years etc.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n * @sample {highstock} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @validvalue [\"day\", \"month\", \"year\"]\n * @apioption plotOptions.series.pointIntervalUnit\n */\n /**\n * Possible values: `\"on\"`, `\"between\"`, `number`.\n *\n * In a column chart, when pointPlacement is `\"on\"`, the point will not\n * create any padding of the X axis. In a polar column chart this means\n * that the first column points directly north. If the pointPlacement is\n * `\"between\"`, the columns will be laid out between ticks. This is\n * useful for example for visualising an amount between two points in\n * time or in a certain sector of a polar chart.\n *\n * Since Highcharts 3.0.2, the point placement can also be numeric,\n * where 0 is on the axis value, -0.5 is between this value and the\n * previous, and 0.5 is between this value and the next. Unlike the\n * textual options, numeric point placement options won't affect axis\n * padding.\n *\n * Note that pointPlacement needs a [pointRange](\n * #plotOptions.series.pointRange) to work. For column series this is\n * computed, but for line-type series it needs to be set.\n *\n * For the `xrange` series type and gantt charts, if the Y axis is a\n * category axis, the `pointPlacement` applies to the Y axis rather than\n * the (typically datetime) X axis.\n *\n * Defaults to `undefined` in cartesian charts, `\"between\"` in polar\n * charts.\n *\n * @see [xAxis.tickmarkPlacement](#xAxis.tickmarkPlacement)\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-between/\n * Between in a column chart\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-numeric/\n * Numeric placement for custom layout\n * @sample {highcharts|highstock} maps/plotoptions/heatmap-pointplacement/\n * Placement in heatmap\n *\n * @type {string|number}\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointPlacement\n */\n /**\n * If no x values are given for the points in a series, pointStart\n * defines on what value to start. For example, if a series contains one\n * yearly value starting from 1945, set pointStart to 1945.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point. The x value from the point options is multiplied by\n * `pointInterval` and added to `pointStart` to produce a modified x\n * value.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-linear/\n * Linear\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointStart\n */\n /**\n * When true, X values in the data set are relative to the current\n * `pointStart`, `pointInterval` and `pointIntervalUnit` settings. This\n * allows compression of the data for datasets with irregular X values.\n *\n * The real X values are computed on the formula `f(x) = ax + b`, where\n * `a` is the `pointInterval` (optionally with a time unit given by\n * `pointIntervalUnit`), and `b` is the `pointStart`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative X value\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative X value\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.relativeXValue\n */\n /**\n * Whether to select the series initially. If `showCheckbox` is true,\n * the checkbox next to the series name in the legend will be checked\n * for a selected series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-selected/\n * One out of two series selected\n *\n * @type {boolean}\n * @default false\n * @since 1.2.0\n * @apioption plotOptions.series.selected\n */\n /**\n * Whether to apply a drop shadow to the graph line. Since 2.3 the\n * shadow can be an object configuration containing `color`, `offsetX`,\n * `offsetY`, `opacity` and `width`.\n *\n * Note that in some cases, like stacked columns or other dense layouts, the\n * series may cast shadows on each other. In that case, the\n * `chart.seriesGroupShadow` allows applying a common drop shadow to the\n * whole series group.\n *\n * @sample {highcharts} highcharts/plotoptions/series-shadow/\n * Shadow enabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption plotOptions.series.shadow\n */\n /**\n * Whether to display this particular series or series type in the\n * legend. Standalone series are shown in legend by default, and linked\n * series are not. Since v7.2.0 it is possible to show series that use\n * colorAxis by setting this option to `true`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @type {boolean}\n * @apioption plotOptions.series.showInLegend\n */\n /**\n * Whether or not to show the series in the navigator. Takes precedence\n * over [navigator.baseSeries](#navigator.baseSeries) if defined.\n *\n * @type {boolean}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.showInNavigator\n */\n /**\n * If set to `true`, the accessibility module will skip past the points\n * in this series for keyboard navigation.\n *\n * @type {boolean}\n * @since 5.0.12\n * @apioption plotOptions.series.skipKeyboardNavigation\n */\n /**\n * Whether to stack the values of each series on top of each other.\n * Possible values are `undefined` to disable, `\"normal\"` to stack by\n * value or `\"percent\"`.\n *\n * When stacking is enabled, data must be sorted\n * in ascending X order.\n *\n * Some stacking options are related to specific series types. In the\n * streamgraph series type, the stacking option is set to `\"stream\"`.\n * The second one is `\"overlap\"`, which only applies to waterfall\n * series.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts} highcharts/plotoptions/series-stacking-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-normal-stacking\n * Waterfall with normal stacking\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-overlap-stacking\n * Waterfall with overlap stacking\n * @sample {highstock} stock/plotoptions/stacking/\n * Area\n *\n * @type {string}\n * @product highcharts highstock\n * @validvalue [\"normal\", \"overlap\", \"percent\", \"stream\"]\n * @apioption plotOptions.series.stacking\n */\n /**\n * Whether to apply steps to the line. Possible values are `left`,\n * `center` and `right`.\n *\n * @sample {highcharts} highcharts/plotoptions/line-step/\n * Different step line options\n * @sample {highcharts} highcharts/plotoptions/area-step/\n * Stepped, stacked area\n * @sample {highstock} stock/plotoptions/line-step/\n * Step line\n *\n * @type {string}\n * @since 1.2.5\n * @product highcharts highstock\n * @validvalue [\"left\", \"center\", \"right\"]\n * @apioption plotOptions.series.step\n */\n /**\n * The threshold, also called zero level or base level. For line type\n * series this is only used in conjunction with\n * [negativeColor](#plotOptions.series.negativeColor).\n *\n * @see [softThreshold](#plotOptions.series.softThreshold).\n *\n * @type {number|null}\n * @default 0\n * @since 3.0\n * @product highcharts highstock\n * @apioption plotOptions.series.threshold\n */\n /**\n * Set the initial visibility of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-visible/\n * Two series, one hidden and one visible\n * @sample {highstock} stock/plotoptions/series-visibility/\n * Hidden series\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.visible\n */\n /**\n * Defines the Axis on which the zones are applied.\n *\n * @see [zones](#plotOptions.series.zones)\n *\n * @sample {highcharts} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n * @sample {highstock} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n *\n * @type {string}\n * @default y\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zoneAxis\n */\n /**\n * General event handlers for the series items. These event hooks can\n * also be attached to the series at run time using the\n * `Highcharts.addEvent` function.\n *\n * @declare Highcharts.SeriesEventsOptionsObject\n *\n * @private\n */\n events: {},\n /**\n * Fires after the series has finished its initial animation, or in case\n * animation is disabled, immediately as the series is displayed.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n * @sample {highstock} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n *\n * @type {Highcharts.SeriesAfterAnimateCallbackFunction}\n * @since 4.0\n * @product highcharts highstock gantt\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.afterAnimate\n */\n /**\n * Fires when the checkbox next to the series' name in the legend is\n * clicked. One parameter, `event`, is passed to the function. The state\n * of the checkbox is found by `event.checked`. The checked item is\n * found by `event.item`. Return `false` to prevent the default action\n * which is to toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Highcharts.SeriesCheckboxClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.checkboxClick\n */\n /**\n * Fires when the series is clicked. One parameter, `event`, is passed\n * to the function, containing common event information. Additionally,\n * `event.point` holds a pointer to the nearest point on the graph.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-click/\n * Alert click info\n * @sample {highstock} stock/plotoptions/series-events-click/\n * Alert click info\n * @sample {highmaps} maps/plotoptions/series-events-click/\n * Display click info in subtitle\n *\n * @type {Highcharts.SeriesClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.click\n */\n /**\n * Fires when the series is hidden after chart generation time, either\n * by clicking the legend item or by calling `.hide()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-hide/\n * Alert when the series is hidden by clicking the legend item\n *\n * @type {Highcharts.SeriesHideCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.hide\n */\n /**\n * Fires when the legend item belonging to the series is clicked. One\n * parameter, `event`, is passed to the function. The default action\n * is to toggle the visibility of the series. This can be prevented\n * by returning `false` or calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-legenditemclick/\n * Confirm hiding and showing\n *\n * @type {Highcharts.SeriesLegendItemClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.legendItemClick\n */\n /**\n * Fires when the mouse leaves the graph. One parameter, `event`, is\n * passed to the function, containing common event information. If the\n * [stickyTracking](#plotOptions.series) option is true, `mouseOut`\n * doesn't happen before the mouse enters another graph or leaves the\n * plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOutCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOut\n */\n /**\n * Fires when the mouse enters the graph. One parameter, `event`, is\n * passed to the function, containing common event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOverCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOver\n */\n /**\n * Fires when the series is shown after chart generation time, either\n * by clicking the legend item or by calling `.show()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-show/\n * Alert when the series is shown by clicking the legend item.\n *\n * @type {Highcharts.SeriesShowCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.show\n */\n /**\n * Options for the point markers of line and scatter-like series. Properties\n * like `fillColor`, `lineColor` and `lineWidth` define the visual\n * appearance of the markers. The `symbol` option defines the shape. Other\n * series types, like column series, don't have markers, but have visual\n * options on the series level instead.\n *\n * In styled mode, the markers can be styled with the `.highcharts-point`,\n * `.highcharts-point-hover` and `.highcharts-point-select` class names.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n *\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @private\n */\n marker: {\n /**\n * Enable or disable the point marker. If `undefined`, the markers\n * are hidden when the data is dense, and shown for more widespread\n * data points.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled/\n * Disabled markers\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled-false/\n * Disabled in normal state but enabled on hover\n * @sample {highstock} stock/plotoptions/series-marker/\n * Enabled markers\n *\n * @type {boolean}\n * @default {highcharts} undefined\n * @default {highstock} false\n * @apioption plotOptions.series.marker.enabled\n */\n /**\n * The threshold for how dense the point markers should be before\n * they are hidden, given that `enabled` is not defined. The number\n * indicates the horizontal distance between the two closest points\n * in the series, as multiples of the `marker.radius`. In other\n * words, the default value of 2 means points are hidden if\n * overlapping horizontally.\n *\n * @sample highcharts/plotoptions/series-marker-enabledthreshold\n * A higher threshold\n *\n * @since 6.0.5\n */\n enabledThreshold: 2,\n /**\n * The fill color of the point marker. When `undefined`, the series'\n * or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * White fill\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.fillColor\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `width` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.height\n */\n /**\n * The color of the point marker's outline. When `undefined`, the\n * series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * Inherit from series color (undefined)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * 2px blue marker\n */\n lineWidth: 0,\n /**\n * The radius of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-radius/\n * Bigger markers\n *\n * @default {highstock} 2\n * @default {highcharts} 4\n *\n */\n radius: 4,\n /**\n * A predefined shape or symbol for the marker. When undefined, the\n * symbol is pulled from options.symbols. Other possible values are\n * `'circle'`, `'square'`,`'diamond'`, `'triangle'` and\n * `'triangle-down'`.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `'url(graphic.png)'`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highstock} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @type {string}\n * @apioption plotOptions.series.marker.symbol\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `height` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.width\n */\n /**\n * States for a single point marker.\n *\n * @declare Highcharts.PointStatesOptionsObject\n */\n states: {\n /**\n * The normal state of a single point marker. Currently only\n * used for setting animation when returning to normal state\n * from hover.\n *\n * @declare Highcharts.PointStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial}\n */\n animation: true\n },\n /**\n * The hover state for a single point marker.\n *\n * @declare Highcharts.PointStatesHoverOptionsObject\n */\n hover: {\n /**\n * Animation when hovering over the marker.\n *\n * @type {boolean|Partial}\n */\n animation: {\n /** @internal */\n duration: 150\n },\n /**\n * Enable or disable the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-enabled/\n * Disabled hover state\n */\n enabled: true,\n /**\n * The fill color of the marker in hover state. When\n * `undefined`, the series' or point's fillColor for normal\n * state is used.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.fillColor\n */\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's lineColor for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linecolor/\n * White fill color, black line color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.lineColor\n */\n /**\n * The width of the point marker's outline. When\n * `undefined`, the series' or point's lineWidth for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linewidth/\n * 3px line width\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.lineWidth\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2 as per the\n * [radiusPlus](#plotOptions.series.marker.states.hover.radiusPlus)\n * option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-radius/\n * 10px radius\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.radius\n */\n /**\n * The number of pixels to increase the radius of the\n * hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n *\n * @since 4.0.3\n */\n radiusPlus: 2,\n /**\n * The additional line width for a hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n *\n * @since 4.0.3\n */\n lineWidthPlus: 1\n },\n /**\n * The appearance of the point marker when selected. In order to\n * allow a point to be selected, set the\n * `series.allowPointSelect` option to true.\n *\n * @declare Highcharts.PointStatesSelectOptionsObject\n */\n select: {\n /**\n * Enable or disable visible feedback for selection.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-enabled/\n * Disabled select state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.marker.states.select.enabled\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-radius/\n * 10px radius for selected points\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.select.radius\n */\n /**\n * The fill color of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-fillcolor/\n * Solid red discs for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n fillColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linecolor/\n * Red line color for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linewidth/\n * 3px line width for selected points\n */\n lineWidth: 2\n }\n }\n },\n /**\n * Properties for each single point.\n *\n * @declare Highcharts.PlotSeriesPointOptions\n *\n * @private\n */\n point: {\n /**\n * Fires when a point is clicked. One parameter, `event`, is passed\n * to the function, containing common event information.\n *\n * If the `series.allowPointSelect` option is true, the default\n * action for the point's click event is to toggle the point's\n * select state. Returning `false` cancels this action.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click/\n * Click marker to alert values\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-column/\n * Click column\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-url/\n * Go to URL\n * @sample {highmaps} maps/plotoptions/series-point-events-click/\n * Click marker to display values\n * @sample {highmaps} maps/plotoptions/series-point-events-click-url/\n * Go to URL\n *\n * @type {Highcharts.PointClickCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.click\n */\n /**\n * Fires when the mouse leaves the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOutCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOut\n */\n /**\n * Fires when the mouse enters the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * Returning `false` cancels the default behavior, which is to show a\n * tooltip for the point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOverCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOver\n */\n /**\n * Fires when the point is removed using the `.remove()` method. One\n * parameter, `event`, is passed to the function. Returning `false`\n * cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n *\n * @type {Highcharts.PointRemoveCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.remove\n */\n /**\n * Fires when the point is selected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-select/\n * Report the last selected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointSelectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.select\n */\n /**\n * Fires when the point is unselected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function.\n * Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-unselect/\n * Report the last unselected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointUnselectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.unselect\n */\n /**\n * Fires when the point is updated programmatically through the\n * `.update()` method. One parameter, `event`, is passed to the\n * function. The new point options can be accessed through\n * `event.options`. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-update/\n * Confirm point updating\n *\n * @type {Highcharts.PointUpdateCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.update\n */\n /**\n * Events for each single point.\n *\n * @declare Highcharts.PointEventsOptionsObject\n */\n events: {}\n },\n /**\n * Options for the series data labels, appearing next to each data\n * point.\n *\n * Since v6.2.0, multiple data labels can be applied to each single\n * point by defining them as an array of configs.\n *\n * In styled mode, the data labels can be styled with the\n * `.highcharts-data-label-box` and `.highcharts-data-label` class names\n * ([see example](https://www.highcharts.com/samples/highcharts/css/series-datalabels)).\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled\n * Data labels enabled\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-multiple\n * Multiple data labels on a bar series\n * @sample {highcharts} highcharts/css/series-datalabels\n * Styled mode example\n * @sample {highmaps} maps/demo/color-axis\n * Choropleth map with data labels\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Using data labels as map markers\n *\n * @type {*|Array<*>}\n * @product highcharts highstock highmaps gantt\n *\n * @private\n */\n dataLabels: {\n /**\n * Enable or disable the initial animation when a series is displayed\n * for the `dataLabels`. The animation can also be set as a\n * configuration object. Please note that this option only applies to\n * the initial animation.\n *\n * For other animations, see [chart.animation](#chart.animation) and the\n * animation parameter under the API methods. The following properties\n * are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n *\n * @type {boolean|Partial}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds. Set to `0` to render the\n * data labels immediately. As `undefined` inherits defer time from the\n * [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation.defer\n */\n /**\n * The alignment of the data label compared to the point. If `right`,\n * the right side of the label should be touching the point. For points\n * with an extent, like columns, the alignments also dictates how to\n * align it inside the box, as given with the\n * [inside](#plotOptions.column.dataLabels.inside) option. Can be one of\n * `left`, `center` or `right`.\n *\n * @sample {highcharts}\n * highcharts/plotoptions/series-datalabels-align-left/ Left\n * aligned\n * @sample {highcharts}\n * highcharts/plotoptions/bar-datalabels-align-inside-bar/ Data\n * labels inside the bar\n *\n * @type {Highcharts.AlignValue|null}\n */\n align: 'center',\n /**\n * Whether to allow data labels to overlap. To make the labels less\n * sensitive for overlapping, the\n * [dataLabels.padding](#plotOptions.series.dataLabels.padding)\n * can be set to 0.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-allowoverlap-false/\n * Don't allow overlap\n *\n * @type {boolean}\n * @default false\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.allowOverlap\n */\n /**\n * The background color or gradient for the data label. Setting it to\n * `auto` will use the point's color.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Data labels as map markers\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.backgroundColor\n */\n /**\n * The border color for the data label. Setting it to `auto` will use\n * the point's color. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderColor\n */\n /**\n * The border radius in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderRadius\n */\n /**\n * The border width in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderWidth\n */\n borderWidth: 0,\n /**\n * A class name for the data label. Particularly in styled mode,\n * this can be used to give each series' or point's data label\n * unique styling. In addition to this option, a default color class\n * name is added so that we can give the labels a contrast text\n * shadow.\n *\n * @sample {highcharts} highcharts/css/data-label-contrast/\n * Contrast text shadow\n * @sample {highcharts} highcharts/css/series-datalabels/\n * Styling by CSS\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.dataLabels.className\n */\n /**\n * This options is deprecated.\n * Use [style.color](#plotOptions.series.dataLabels.style) instead.\n *\n * The text color for the data labels. Defaults to `undefined`. For\n * certain series types, like column or map, the data labels can be\n * drawn inside the points. In this case the data label will be\n * drawn with maximum contrast by default. Additionally, it will be\n * given a `text-outline` style with the opposite color, to further\n * increase the contrast. This can be overridden by setting the\n * `text-outline` style to `none` in the `dataLabels.style` option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-color/\n * Red data labels\n * @sample {highmaps} maps/demo/color-axis/\n * White data labels\n *\n * @see [style.color](#plotOptions.series.dataLabels.style)\n *\n * @type {Highcharts.ColorType}\n * @deprecated 10.3\n * @apioption plotOptions.series.dataLabels.color\n */\n /**\n * Whether to hide data labels that are outside the plot area. By\n * default, the data label is moved inside the plot area according\n * to the\n * [overflow](#plotOptions.series.dataLabels.overflow)\n * option.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.3\n * @apioption plotOptions.series.dataLabels.crop\n */\n /**\n * Whether to defer displaying the data labels until the initial\n * series animation has finished. Setting to `false` renders the\n * data label immediately. If set to `true` inherits the defer\n * time set in [plotOptions.series.animation](#plotOptions.series.animation).\n *\n * @since 4.0.0\n * @type {boolean}\n * @product highcharts highstock gantt\n */\n defer: true,\n /**\n * Enable or disable the data labels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled/\n * Data labels enabled\n * @sample {highmaps} maps/demo/color-axis/\n * Data labels enabled\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.enabled\n */\n /**\n * A declarative filter to control of which data labels to display.\n * The declarative filter is designed for use when callback\n * functions are not available, like when the chart options require\n * a pure JSON structure or for use with graphical editors. For\n * programmatic control, use the `formatter` instead, and return\n * `undefined` to disable a single data label.\n *\n * @example\n * filter: {\n * property: 'percentage',\n * operator: '>',\n * value: 4\n * }\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome\n * Data labels filtered by percentage\n *\n * @declare Highcharts.DataLabelsFilterOptionsObject\n * @since 6.0.3\n * @apioption plotOptions.series.dataLabels.filter\n */\n /**\n * The operator to compare by. Can be one of `>`, `<`, `>=`, `<=`,\n * `==`, and `===`.\n *\n * @type {string}\n * @validvalue [\">\", \"<\", \">=\", \"<=\", \"==\", \"===\"]\n * @apioption plotOptions.series.dataLabels.filter.operator\n */\n /**\n * The point property to filter by. Point options are passed\n * directly to properties, additionally there are `y` value,\n * `percentage` and others listed under {@link Highcharts.Point}\n * members.\n *\n * @type {string}\n * @apioption plotOptions.series.dataLabels.filter.property\n */\n /**\n * The value to compare against.\n *\n * @type {number}\n * @apioption plotOptions.series.dataLabels.filter.value\n */\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value in the data label\n *\n * @type {string}\n * @default y\n * @default point.value\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that if a\n * `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n */\n formatter: function () {\n const { numberFormatter } = this.series.chart;\n return typeof this.y !== 'number' ?\n '' : numberFormatter(this.y, -1);\n },\n /**\n * For points with an extent, like columns or map areas, whether to\n * align the data label inside the box or to the actual value point.\n * Defaults to `false` in most cases, `true` in stacked columns.\n *\n * @type {boolean}\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.inside\n */\n /**\n * Format for points with the value of null. Works analogously to\n * [format](#plotOptions.series.dataLabels.format). `nullFormat` can\n * be applied only to series which support displaying null points\n * i.e `heatmap` or `tilemap`. Does not work with series that don't\n * display null points, like `line`, `column`, `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {boolean|string}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormat\n */\n /**\n * Callback JavaScript function that defines formatting for points\n * with the value of null. Works analogously to\n * [formatter](#plotOptions.series.dataLabels.formatter).\n * `nullFormatter` can be applied only to series which support\n * displaying null points i.e `heatmap` or `tilemap`. Does not work\n * with series that don't display null points, like `line`, `column`,\n * `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormatter\n */\n /**\n * How to handle data labels that flow outside the plot area. The\n * default is `\"justify\"`, which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display data labels outside the plot area, set `crop` to\n * `false` and `overflow` to `\"allow\"`.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @default justify\n * @since 3.0.6\n * @apioption plotOptions.series.dataLabels.overflow\n */\n /**\n * When either the `borderWidth` or the `backgroundColor` is set,\n * this is the padding within the box.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @since 2.2.1\n */\n padding: 5,\n /**\n * Aligns data labels relative to points. If `center` alignment is\n * not possible, it defaults to `right`.\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @apioption plotOptions.series.dataLabels.position\n */\n /**\n * Text rotation in degrees. Note that due to a more complex\n * structure, backgrounds, borders and padding will be lost on a\n * rotated data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical labels\n *\n * @type {number}\n * @default 0\n * @apioption plotOptions.series.dataLabels.rotation\n */\n /**\n * The shadow of the box. Works best with `borderWidth` or\n * `backgroundColor`. Since 2.3 the shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity`\n * and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.shadow\n */\n /**\n * The name of a symbol to use for the border around the label.\n * Symbols are predefined functions on the Renderer object.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-shape/\n * A callout for annotations\n *\n * @type {string}\n * @default square\n * @since 4.1.2\n * @apioption plotOptions.series.dataLabels.shape\n */\n /**\n * Styles for the label. The default `color` setting is\n * `\"contrast\"`, which is a pseudo color that Highcharts picks up\n * and applies the maximum contrast to the underlying point item,\n * for example the bar in a bar chart.\n *\n * The `textOutline` is a pseudo property that applies an outline of\n * the given width with the given color, which by default is the\n * maximum contrast to the text. So a bright text color will result\n * in a black text outline for maximum readability on a mixed\n * background. In some cases, especially with grayscale text, the\n * text outline doesn't work well, in which cases it can be disabled\n * by setting it to `\"none\"`. When `useHTML` is true, the\n * `textOutline` will not be picked up. In this, case, the same\n * effect can be acheived through the `text-shadow` CSS property.\n *\n * For some series types, where each point has an extent, like for\n * example tree maps, the data label may overflow the point. There\n * are two strategies for handling overflow. By default, the text\n * will wrap to multiple lines. The other strategy is to set\n * `style.textOverflow` to `ellipsis`, which will keep the text on\n * one line plus it will break inside long words.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-style/\n * Bold labels\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow/\n * Long labels truncated with an ellipsis in a pie\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap/\n * Long labels are wrapped in a pie\n * @sample {highmaps} maps/demo/color-axis/\n * Bold labels\n *\n * @type {Highcharts.CSSObject}\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.style\n */\n style: {\n /** @internal */\n fontSize: '0.7em',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n color: 'contrast',\n /** @internal */\n textOutline: '1px contrast'\n },\n /**\n * Options for a label text which should follow marker's shape.\n * Border and background are disabled for a label that follows a\n * path.\n *\n * **Note:** Only SVG-based renderer supports this option. Setting\n * `useHTML` to true will disable this option.\n *\n * @declare Highcharts.DataLabelsTextPathOptionsObject\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath\n */\n /**\n * Presentation attributes for the text path.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.attributes\n */\n /**\n * Enable or disable `textPath` option for link's or marker's data\n * labels.\n *\n * @type {boolean}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.enabled\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.useHTML\n */\n /**\n * The vertical alignment of a data label. Can be one of `top`,\n * `middle` or `bottom`. The default value depends on the data, for\n * instance in a column chart, the label is above positive values\n * and below negative values.\n *\n * @type {Highcharts.VerticalAlignValue|null}\n * @since 2.3.3\n */\n verticalAlign: 'bottom',\n /**\n * The x position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n * @sample {highcharts} highcharts/plotoptions/bar-datalabels-align-inside-bar/\n * Data labels inside the bar\n */\n x: 0,\n /**\n * The z index of the data labels. Use a `zIndex` of 6 to display it above\n * the series, or use a `zIndex` of 2 to display it behind the series.\n *\n * @type {number}\n * @default 6\n * @since 2.3.5\n * @apioption plotOptions.series.dataLabels.zIndex\n */\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n */\n y: 0\n },\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, even if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @since 2.2\n * @product highcharts highstock\n *\n * @private\n */\n cropThreshold: 300,\n /**\n * Opacity of a series parts: line, fill (e.g. area) and dataLabels.\n *\n * @see [states.inactive.opacity](#plotOptions.series.states.inactive.opacity)\n *\n * @since 7.1.0\n *\n * @private\n */\n opacity: 1,\n /**\n * The width of each point on the x axis. For example in a column chart\n * with one value each day, the pointRange would be 1 day (= 24 * 3600\n * * 1000 milliseconds). This is normally computed automatically, but\n * this option can be used to override the automatic value.\n *\n * @product highstock\n *\n * @private\n */\n pointRange: 0,\n /**\n * When this is true, the series will not cause the Y axis to cross\n * the zero plane (or [threshold](#plotOptions.series.threshold) option)\n * unless the data actually crosses the plane.\n *\n * For example, if `softThreshold` is `false`, a series of 0, 1, 2,\n * 3 will make the Y axis show negative values according to the\n * `minPadding` option. If `softThreshold` is `true`, the Y axis starts\n * at 0.\n *\n * @since 4.1.9\n * @product highcharts highstock\n *\n * @private\n */\n softThreshold: true,\n /**\n * @declare Highcharts.SeriesStatesOptionsObject\n *\n * @private\n */\n states: {\n /**\n * The normal state of a series, or for point items in column, pie\n * and similar series. Currently only used for setting animation\n * when returning to normal state from hover.\n *\n * @declare Highcharts.SeriesStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial}\n */\n animation: true\n },\n /**\n * Options for the hovered series. These settings override the\n * normal state options when a series is moused over or touched.\n *\n * @declare Highcharts.SeriesStatesHoverOptionsObject\n */\n hover: {\n /**\n * Enable separate styles for the hovered series to visualize\n * that the user hovers either the series itself or the legend.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-pie/\n * Pie\n *\n * @type {boolean}\n * @default true\n * @since 1.2\n * @apioption plotOptions.series.states.hover.enabled\n */\n /**\n * Animation setting for hovering the graph in line-type series.\n *\n * @type {boolean|Partial}\n * @since 5.0.8\n * @product highcharts highstock\n */\n animation: {\n /**\n * The duration of the hover animation in milliseconds. By\n * default the hover state animates quickly in, and slowly\n * back to normal.\n *\n * @internal\n */\n duration: 150\n },\n /**\n * Pixel width of the graph line. By default this property is\n * undefined, and the `lineWidthPlus` property dictates how much\n * to increase the linewidth from normal state.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidth/\n * 5px line on hover\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.lineWidth\n */\n /**\n * The additional line width for the graph of a hovered series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n *\n * @since 4.0.3\n * @product highcharts highstock\n */\n lineWidthPlus: 1,\n /**\n * In Highcharts 1.0, the appearance of all markers belonging\n * to the hovered series. For settings on the hover state of the\n * individual point, see\n * [marker.states.hover](#plotOptions.series.marker.states.hover).\n *\n * @deprecated\n *\n * @extends plotOptions.series.marker\n * @excluding states, symbol\n * @product highcharts highstock\n */\n marker: {\n // lineWidth: base + 1,\n // radius: base + 1\n },\n /**\n * Options for the halo appearing around the hovered point in\n * line-type series as well as outside the hovered slice in pie\n * charts. By default the halo is filled by the current point or\n * series color with an opacity of 0.25\\. The halo can be\n * disabled by setting the `halo` option to `null`.\n *\n * In styled mode, the halo is styled with the\n * `.highcharts-halo` class, with colors inherited from\n * `.highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/plotoptions/halo/\n * Halo options\n * @sample {highstock} highcharts/plotoptions/halo/\n * Halo options\n *\n * @declare Highcharts.SeriesStatesHoverHaloOptionsObject\n * @type {null|*}\n * @since 4.0\n * @product highcharts highstock\n */\n halo: {\n /**\n * A collection of SVG attributes to override the appearance\n * of the halo, for example `fill`, `stroke` and\n * `stroke-width`.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 4.0\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.halo.attributes\n */\n /**\n * The pixel size of the halo. For point markers this is the\n * radius of the halo. For pie slices it is the width of the\n * halo outside the slice. For bubbles it defaults to 5 and\n * is the width of the halo outside the bubble.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n size: 10,\n /**\n * Opacity for the halo unless a specific fill is overridden\n * using the `attributes` setting. Note that Highcharts is\n * only able to apply opacity to colors of hex or rgb(a)\n * formats.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n opacity: 0.25\n }\n },\n /**\n * Specific options for point in selected states, after being\n * selected by\n * [allowPointSelect](#plotOptions.series.allowPointSelect)\n * or programmatically.\n *\n * @sample maps/plotoptions/series-allowpointselect/\n * Allow point select demo\n *\n * @declare Highcharts.SeriesStatesSelectOptionsObject\n * @extends plotOptions.series.states.hover\n * @excluding brightness\n */\n select: {\n animation: {\n /** @internal */\n duration: 0\n }\n },\n /**\n * The opposite state of a hover for series.\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @declare Highcharts.SeriesStatesInactiveOptionsObject\n */\n inactive: {\n /**\n * Enable or disable the inactive state for a series\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.states.inactive.enabled\n */\n /**\n * The animation for entering the inactive state.\n *\n * @type {boolean|Partial}\n */\n animation: {\n /** @internal */\n duration: 150\n },\n /**\n * Opacity of series elements (dataLabels, line, area).\n *\n * @type {number}\n */\n opacity: 0.2\n }\n },\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event on a\n * series isn't triggered until the mouse moves over another series, or\n * out of the plot area. When false, the `mouseOut` event on a series is\n * triggered when the mouse leaves the area around the series' graph or\n * markers. This also implies the tooltip when not shared. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series. Defaults to true\n * for line and area type series, but to false for columns, pies etc.\n *\n * **Note:** The boost module will force this option because of\n * technical limitations.\n *\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-true/\n * True by default\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-false/\n * False\n *\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 2.0\n *\n * @private\n */\n stickyTracking: true,\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip), but only\n * the following properties can be defined on a series level.\n *\n * @declare Highcharts.SeriesTooltipOptionsObject\n * @since 2.3\n * @extends tooltip\n * @excluding animation, backgroundColor, borderColor, borderRadius,\n * borderWidth, className, crosshairs, enabled, formatter,\n * headerShape, hideDelay, outside, padding, positioner,\n * shadow, shape, shared, snap, split, stickOnContact,\n * style, useHTML\n * @apioption plotOptions.series.tooltip\n */\n /**\n * When a series contains a data array that is longer than this, only\n * one dimensional arrays of numbers, or two dimensional arrays with\n * x and y values are allowed. Also, only the first point is tested,\n * and the rest are assumed to be the same format. This saves expensive\n * data checking and indexing in long series. Set it to `0` disable.\n *\n * Note:\n * In boost mode turbo threshold is forced. Only array of numbers or\n * two dimensional arrays are allowed.\n *\n * @since 2.2\n * @product highcharts highstock gantt\n *\n * @private\n */\n turboThreshold: 1000,\n /**\n * An array defining zones within a series. Zones can be applied to the\n * X axis, Y axis or Z axis for bubbles, according to the `zoneAxis`\n * option. The zone definitions have to be in ascending order regarding\n * to the value.\n *\n * In styled mode, the color zones are styled with the\n * `.highcharts-zone-{n}` class, or custom classed from the `className`\n * option\n * ([view live demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/color-zones/)).\n *\n * @see [zoneAxis](#plotOptions.series.zoneAxis)\n *\n * @sample {highcharts} highcharts/series/color-zones-simple/\n * Color zones\n * @sample {highstock} highcharts/series/color-zones-simple/\n * Color zones\n *\n * @declare Highcharts.SeriesZonesOptionsObject\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones\n */\n /**\n * Styled mode only. A custom class name for the zone.\n *\n * @sample highcharts/css/color-zones/\n * Zones styled by class name\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.zones.className\n */\n /**\n * Defines the color of the series.\n *\n * @see [series color](#plotOptions.series.color)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.color\n */\n /**\n * A name for the dash style to use for the graph.\n *\n * @see [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n *\n * @sample {highcharts|highstock} highcharts/series/color-zones-dashstyle-dot/\n * Dashed line indicates prognosis\n *\n * @type {Highcharts.DashStyleValue}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.dashStyle\n */\n /**\n * Defines the fill color for the series (in area type series)\n *\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.fillColor\n */\n /**\n * The value up to where the zone extends, if undefined the zones\n * stretches to the last value in the series.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.value\n */\n /**\n * When using dual or multiple color axes, this number defines which\n * colorAxis the particular series is connected to. It refers to\n * either the\n * {@link #colorAxis.id|axis id}\n * or the index of the axis in the colorAxis array, with 0 being the\n * first. Set this option to false to prevent a series from connecting\n * to the default color axis.\n *\n * Since v7.2.0 the option can also be an axis id or an axis index\n * instead of a boolean flag.\n *\n * @sample highcharts/coloraxis/coloraxis-with-pie/\n * Color axis with pie series\n * @sample highcharts/coloraxis/multiple-coloraxis/\n * Multiple color axis\n *\n * @type {number|string|boolean}\n * @default 0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorAxis\n */\n /**\n * Determines what data value should be used to calculate point color\n * if `colorAxis` is used. Requires to set `min` and `max` if some\n * custom point property is used or if approximation for data grouping\n * is set to `'sum'`.\n *\n * @sample highcharts/coloraxis/custom-color-key/\n * Custom color key\n * @sample highcharts/coloraxis/color-key-with-stops/\n * Custom colorKey with color axis stops\n * @sample highcharts/coloraxis/changed-default-color-key/\n * Changed default color key\n *\n * @type {string}\n * @default y\n * @since 7.2.0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorKey\n */\n /**\n * Determines whether the series should look for the nearest point\n * in both dimensions or just the x-dimension when hovering the series.\n * Defaults to `'xy'` for scatter series and `'x'` for most other\n * series. If the data has duplicate x-values, it is recommended to\n * set this to `'xy'` to allow hovering over all points.\n *\n * Applies only to series types using nearest neighbor search (not\n * direct hover) for tooltip.\n *\n * @sample {highcharts} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highstock} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highmaps} highcharts/series/findnearestpointby/\n * Different hover behaviors\n *\n * @since 5.0.10\n * @validvalue [\"x\", \"xy\"]\n *\n * @private\n */\n findNearestPointBy: 'x'\n /**\n * What type of legend symbol to render for this series.\n *\n * @validvalue [\"lineMarker\", \"rectangle\"]\n *\n * @sample {highcharts} highcharts/series/legend-symbol/\n * Change the legend symbol\n */\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return seriesDefaults;\n });\n _registerModule(_modules, 'Core/Series/Series.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (A, D, F, H, LegendSymbol, Point, SeriesDefaults, SeriesRegistry, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { animObject, setAnimation } = A;\n const { defaultOptions } = D;\n const { registerEventOptions } = F;\n const { hasTouch, svg, win } = H;\n const { seriesTypes } = SeriesRegistry;\n const { addEvent, arrayMax, arrayMin, clamp, cleanRecursively, correctFloat, defined, erase, error, extend, find, fireEvent, getNestedProperty, isArray, isNumber, isString, merge, objectEach, pick, removeEvent, splat, syncTimeout } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * This is the base series prototype that all other series types inherit from.\n * A new series is initialized either through the\n * [series](https://api.highcharts.com/highcharts/series)\n * option structure, or after the chart is initialized, through\n * {@link Highcharts.Chart#addSeries}.\n *\n * The object can be accessed in a number of ways. All series and point event\n * handlers give a reference to the `series` object. The chart object has a\n * {@link Highcharts.Chart#series|series} property that is a collection of all\n * the chart's series. The point objects and axis objects also have the same\n * reference.\n *\n * Another way to reference the series programmatically is by `id`. Add an id\n * in the series configuration options, and get the series object by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the series are given in three levels. Options for\n * all series in a chart are given in the\n * [plotOptions.series](https://api.highcharts.com/highcharts/plotOptions.series)\n * object. Then options for all series of a specific type\n * are given in the plotOptions of that type, for example `plotOptions.line`.\n * Next, options for one single series are given in the series array, or as\n * arguments to `chart.addSeries`.\n *\n * The data in the series is stored in various arrays.\n *\n * - First, `series.options.data` contains all the original config options for\n * each point whether added by options or methods like `series.addPoint`.\n *\n * - Next, `series.data` contains those values converted to points, but in case\n * the series data length exceeds the `cropThreshold`, or if the data is\n * grouped, `series.data` doesn't contain all the points. It only contains the\n * points that have been created on demand.\n *\n * - Then there's `series.points` that contains all currently visible point\n * objects. In case of cropping, the cropped-away points are not part of this\n * array. The `series.points` array starts at `series.cropStart` compared to\n * `series.data` and `series.options.data`. If however the series data is\n * grouped, these can't be correlated one to one.\n *\n * - `series.xData` and `series.processedXData` contain clean x values,\n * equivalent to `series.data` and `series.points`.\n *\n * - `series.yData` and `series.processedYData` contain clean y values,\n * equivalent to `series.data` and `series.points`.\n *\n * @class\n * @name Highcharts.Series\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.SeriesOptionsType|object} options\n * The series options.\n */\n class Series {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n this._i = void 0;\n this.chart = void 0;\n this.data = void 0;\n this.eventOptions = void 0;\n this.eventsToUnbind = void 0;\n this.index = void 0;\n this.linkedSeries = void 0;\n this.options = void 0;\n this.points = void 0;\n this.processedXData = void 0;\n this.processedYData = void 0;\n this.tooltipOptions = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.zones = void 0;\n /** eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n init(chart, userOptions) {\n fireEvent(this, 'init', { options: userOptions });\n const series = this, chartSeries = chart.series;\n // The 'eventsToUnbind' property moved from prototype into the\n // Series init to avoid reference to the same array between\n // the different series and charts. #12959, #13937\n this.eventsToUnbind = [];\n /**\n * Read only. The chart that the series belongs to.\n *\n * @name Highcharts.Series#chart\n * @type {Highcharts.Chart}\n */\n series.chart = chart;\n /**\n * Read only. The series' type, like \"line\", \"area\", \"column\" etc.\n * The type in the series options anc can be altered using\n * {@link Series#update}.\n *\n * @name Highcharts.Series#type\n * @type {string}\n */\n /**\n * Read only. The series' current options. To update, use\n * {@link Series#update}.\n *\n * @name Highcharts.Series#options\n * @type {Highcharts.SeriesOptionsType}\n */\n series.options = series.setOptions(userOptions);\n const options = series.options;\n series.linkedSeries = [];\n // bind the axes\n series.bindAxes();\n extend(series, {\n /**\n * The series name as given in the options. Defaults to\n * \"Series {n}\".\n *\n * @name Highcharts.Series#name\n * @type {string}\n */\n name: options.name,\n state: '',\n /**\n * Read only. The series' visibility state as set by {@link\n * Series#show}, {@link Series#hide}, or in the initial\n * configuration.\n *\n * @name Highcharts.Series#visible\n * @type {boolean}\n */\n visible: options.visible !== false,\n /**\n * Read only. The series' selected state as set by {@link\n * Highcharts.Series#select}.\n *\n * @name Highcharts.Series#selected\n * @type {boolean}\n */\n selected: options.selected === true // false by default\n });\n registerEventOptions(this, options);\n const events = options.events;\n if ((events && events.click) ||\n (options.point &&\n options.point.events &&\n options.point.events.click) ||\n options.allowPointSelect) {\n chart.runTrackerClick = true;\n }\n series.getColor();\n series.getSymbol();\n // Initialize the parallel data arrays\n series.parallelArrays.forEach(function (key) {\n if (!series[key + 'Data']) {\n series[key + 'Data'] = [];\n }\n });\n // Mark cartesian\n if (series.isCartesian) {\n chart.hasCartesianSeries = true;\n }\n // Get the index and register the series in the chart. The index is\n // one more than the current latest series index (#5960).\n let lastSeries;\n if (chartSeries.length) {\n lastSeries = chartSeries[chartSeries.length - 1];\n }\n series._i = pick(lastSeries && lastSeries._i, -1) + 1;\n series.opacity = series.options.opacity;\n // Insert the series and re-order all series above the insertion\n // point.\n chart.orderSeries(this.insert(chartSeries));\n // Set options for series with sorting and set data later.\n if (options.dataSorting && options.dataSorting.enabled) {\n series.setDataSortingOptions();\n }\n else if (!series.points && !series.data) {\n series.setData(options.data, false);\n }\n fireEvent(this, 'afterInit');\n }\n /**\n * Check whether the series item is itself or inherits from a certain\n * series type.\n *\n * @function Highcharts.Series#is\n * @param {string} type The type of series to check for, can be either\n * featured or custom series types. For example `column`, `pie`,\n * `ohlc` etc.\n *\n * @return {boolean}\n * True if this item is or inherits from the given type.\n */\n is(type) {\n return seriesTypes[type] && this instanceof seriesTypes[type];\n }\n /**\n * Insert the series in a collection with other series, either the chart\n * series or yAxis series, in the correct order according to the index\n * option. Used internally when adding series.\n *\n * @private\n * @function Highcharts.Series#insert\n * @param {Array} collection\n * A collection of series, like `chart.series` or `xAxis.series`.\n * @return {number}\n * The index of the series in the collection.\n */\n insert(collection) {\n const indexOption = this.options.index;\n let i;\n // Insert by index option\n if (isNumber(indexOption)) {\n i = collection.length;\n while (i--) {\n // Loop down until the interted element has higher index\n if (indexOption >=\n pick(collection[i].options.index, collection[i]._i)) {\n collection.splice(i + 1, 0, this);\n break;\n }\n }\n if (i === -1) {\n collection.unshift(this);\n }\n i = i + 1;\n // Or just push it to the end\n }\n else {\n collection.push(this);\n }\n return pick(i, collection.length - 1);\n }\n /**\n * Set the xAxis and yAxis properties of cartesian series, and register\n * the series in the `axis.series` array.\n *\n * @private\n * @function Highcharts.Series#bindAxes\n */\n bindAxes() {\n const series = this, seriesOptions = series.options, chart = series.chart;\n let axisOptions;\n fireEvent(this, 'bindAxes', null, function () {\n // repeat for xAxis and yAxis\n (series.axisTypes || []).forEach(function (AXIS) {\n let index = 0;\n // loop through the chart's axis objects\n chart[AXIS].forEach(function (axis) {\n axisOptions = axis.options;\n // apply if the series xAxis or yAxis option mathches\n // the number of the axis, or if undefined, use the\n // first axis\n if ((seriesOptions[AXIS] === index &&\n !axisOptions.isInternal) ||\n (typeof seriesOptions[AXIS] !==\n 'undefined' &&\n seriesOptions[AXIS] === axisOptions.id) ||\n (typeof seriesOptions[AXIS] ===\n 'undefined' &&\n axisOptions.index === 0)) {\n // register this series in the axis.series lookup\n series.insert(axis.series);\n // set this series.xAxis or series.yAxis reference\n /**\n * Read only. The unique xAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#xAxis\n * @type {Highcharts.Axis}\n */\n /**\n * Read only. The unique yAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#yAxis\n * @type {Highcharts.Axis}\n */\n series[AXIS] = axis;\n // mark dirty for redraw\n axis.isDirty = true;\n }\n if (!axisOptions.isInternal) {\n index++;\n }\n });\n // The series needs an X and an Y axis\n if (!series[AXIS] &&\n series.optionalAxis !== AXIS) {\n error(18, true, chart);\n }\n });\n });\n fireEvent(this, 'afterBindAxes');\n }\n /**\n * For simple series types like line and column, the data values are\n * held in arrays like xData and yData for quick lookup to find extremes\n * and more. For multidimensional series like bubble and map, this can\n * be extended with arrays like zData and valueData by adding to the\n * `series.parallelArrays` array.\n *\n * @private\n * @function Highcharts.Series#updateParallelArrays\n */\n updateParallelArrays(point, i, iArgs) {\n const series = point.series, fn = isNumber(i) ?\n // Insert the value in the given position\n function (key) {\n const val = key === 'y' && series.toYData ?\n series.toYData(point) :\n point[key];\n series[key + 'Data'][i] = val;\n } :\n // Apply the method specified in i with the following\n // arguments as arguments\n function (key) {\n Array.prototype[i].apply(series[key + 'Data'], iArgs);\n };\n series.parallelArrays.forEach(fn);\n }\n /**\n * Define hasData functions for series. These return true if there\n * are data points on this series within the plot area.\n *\n * @private\n * @function Highcharts.Series#hasData\n */\n hasData() {\n return ((this.visible &&\n typeof this.dataMax !== 'undefined' &&\n typeof this.dataMin !== 'undefined') || ( // #3703\n this.visible &&\n this.yData &&\n this.yData.length > 0) // #9758\n );\n }\n /**\n * Return an auto incremented x value based on the pointStart and\n * pointInterval options. This is only used if an x value is not given\n * for the point that calls autoIncrement.\n *\n * @private\n * @function Highcharts.Series#autoIncrement\n */\n autoIncrement(x) {\n const options = this.options, pointIntervalUnit = options.pointIntervalUnit, relativeXValue = options.relativeXValue, time = this.chart.time;\n let xIncrement = this.xIncrement, date, pointInterval;\n xIncrement = pick(xIncrement, options.pointStart, 0);\n this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);\n if (relativeXValue && isNumber(x)) {\n pointInterval *= x;\n }\n // Added code for pointInterval strings\n if (pointIntervalUnit) {\n date = new time.Date(xIncrement);\n if (pointIntervalUnit === 'day') {\n time.set('Date', date, time.get('Date', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'month') {\n time.set('Month', date, time.get('Month', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'year') {\n time.set('FullYear', date, time.get('FullYear', date) + pointInterval);\n }\n pointInterval = date.getTime() - xIncrement;\n }\n if (relativeXValue && isNumber(x)) {\n return xIncrement + pointInterval;\n }\n this.xIncrement = xIncrement + pointInterval;\n return xIncrement;\n }\n /**\n * Internal function to set properties for series if data sorting is\n * enabled.\n *\n * @private\n * @function Highcharts.Series#setDataSortingOptions\n */\n setDataSortingOptions() {\n const options = this.options;\n extend(this, {\n requireSorting: false,\n sorted: false,\n enabledDataSorting: true,\n allowDG: false\n });\n // To allow unsorted data for column series.\n if (!defined(options.pointRange)) {\n options.pointRange = 1;\n }\n }\n /**\n * Set the series options by merging from the options tree. Called\n * internally on initializing and updating series. This function will\n * not redraw the series. For API usage, use {@link Series#update}.\n * @private\n * @function Highcharts.Series#setOptions\n * @param {Highcharts.SeriesOptionsType} itemOptions\n * The series options.\n * @emits Highcharts.Series#event:afterSetOptions\n */\n setOptions(itemOptions) {\n const chart = this.chart, chartOptions = chart.options, plotOptions = chartOptions.plotOptions, userOptions = chart.userOptions || {}, seriesUserOptions = merge(itemOptions), styledMode = chart.styledMode, e = {\n plotOptions: plotOptions,\n userOptions: seriesUserOptions\n };\n let zone;\n fireEvent(this, 'setOptions', e);\n // These may be modified by the event\n const typeOptions = e.plotOptions[this.type], userPlotOptions = (userOptions.plotOptions || {});\n // use copy to prevent undetected changes (#9762)\n /**\n * Contains series options by the user without defaults.\n * @name Highcharts.Series#userOptions\n * @type {Highcharts.SeriesOptionsType}\n */\n this.userOptions = e.userOptions;\n const options = merge(typeOptions, plotOptions.series, \n // #3881, chart instance plotOptions[type] should trump\n // plotOptions.series\n userOptions.plotOptions &&\n userOptions.plotOptions[this.type], seriesUserOptions);\n // The tooltip options are merged between global and series specific\n // options. Importance order asscendingly:\n // globals: (1)tooltip, (2)plotOptions.series,\n // (3)plotOptions[this.type]\n // init userOptions with possible later updates: 4-6 like 1-3 and\n // (7)this series options\n this.tooltipOptions = merge(defaultOptions.tooltip, // 1\n defaultOptions.plotOptions.series &&\n defaultOptions.plotOptions.series.tooltip, // 2\n defaultOptions.plotOptions[this.type].tooltip, // 3\n chartOptions.tooltip.userOptions, // 4\n plotOptions.series &&\n plotOptions.series.tooltip, // 5\n plotOptions[this.type].tooltip, // 6\n seriesUserOptions.tooltip // 7\n );\n // When shared tooltip, stickyTracking is true by default,\n // unless user says otherwise.\n this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptions[this.type] &&\n userPlotOptions[this.type].stickyTracking, userPlotOptions.series && userPlotOptions.series.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?\n true :\n options.stickyTracking));\n // Delete marker object if not allowed (#1125)\n if (typeOptions.marker === null) {\n delete options.marker;\n }\n // Handle color zones\n this.zoneAxis = options.zoneAxis;\n const zones = this.zones = (options.zones || []).slice();\n if ((options.negativeColor || options.negativeFillColor) &&\n !options.zones) {\n zone = {\n value: options[this.zoneAxis + 'Threshold'] ||\n options.threshold ||\n 0,\n className: 'highcharts-negative'\n };\n if (!styledMode) {\n zone.color = options.negativeColor;\n zone.fillColor = options.negativeFillColor;\n }\n zones.push(zone);\n }\n if (zones.length) { // Push one extra zone for the rest\n if (defined(zones[zones.length - 1].value)) {\n zones.push(styledMode ? {} : {\n color: this.color,\n fillColor: this.fillColor\n });\n }\n }\n fireEvent(this, 'afterSetOptions', { options: options });\n return options;\n }\n /**\n * Return series name in \"Series {Number}\" format or the one defined by\n * a user. This method can be simply overridden as series name format\n * can vary (e.g. technical indicators).\n *\n * @function Highcharts.Series#getName\n *\n * @return {string}\n * The series name.\n */\n getName() {\n // #4119\n return pick(this.options.name, 'Series ' + (this.index + 1));\n }\n /**\n * @private\n * @function Highcharts.Series#getCyclic\n */\n getCyclic(prop, value, defaults) {\n const chart = this.chart, userOptions = this.userOptions, indexName = prop + 'Index', counterName = prop + 'Counter', len = defaults ? defaults.length : pick(chart.options.chart[prop + 'Count'], chart[prop + 'Count']);\n let i, setting;\n if (!value) {\n // Pick up either the colorIndex option, or the _colorIndex\n // after Series.update()\n setting = pick(userOptions[indexName], userOptions['_' + indexName]);\n if (defined(setting)) { // after Series.update()\n i = setting;\n }\n else {\n // #6138\n if (!chart.series.length) {\n chart[counterName] = 0;\n }\n userOptions['_' + indexName] = i =\n chart[counterName] % len;\n chart[counterName] += 1;\n }\n if (defaults) {\n value = defaults[i];\n }\n }\n // Set the colorIndex\n if (typeof i !== 'undefined') {\n this[indexName] = i;\n }\n this[prop] = value;\n }\n /**\n * Get the series' color based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getColor\n */\n getColor() {\n if (this.chart.styledMode) {\n this.getCyclic('color');\n }\n else if (this.options.colorByPoint) {\n this.color = \"#cccccc\" /* Palette.neutralColor20 */;\n }\n else {\n this.getCyclic('color', this.options.color ||\n defaultOptions.plotOptions[this.type].color, this.chart.options.colors);\n }\n }\n /**\n * Get all points' instances created for this series.\n *\n * @private\n * @function Highcharts.Series#getPointsCollection\n */\n getPointsCollection() {\n return (this.hasGroupedData ? this.points : this.data) || [];\n }\n /**\n * Get the series' symbol based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getSymbol\n */\n getSymbol() {\n const seriesMarkerOption = this.options.marker;\n this.getCyclic('symbol', seriesMarkerOption.symbol, this.chart.options.symbols);\n }\n /**\n * Finds the index of an existing point that matches the given point\n * options.\n *\n * @private\n * @function Highcharts.Series#findPointIndex\n * @param {Highcharts.PointOptionsObject} optionsObject\n * The options of the point.\n * @param {number} fromIndex\n * The index to start searching from, used for optimizing series with\n * required sorting.\n * @return {number|undefined}\n * Returns the index of a matching point, or undefined if no match is found.\n */\n findPointIndex(optionsObject, fromIndex) {\n const id = optionsObject.id, x = optionsObject.x, oldData = this.points, dataSorting = this.options.dataSorting;\n let matchingPoint, matchedById, pointIndex;\n if (id) {\n const item = this.chart.get(id);\n if (item instanceof Point) {\n matchingPoint = item;\n }\n }\n else if (this.linkedParent ||\n this.enabledDataSorting ||\n this.options.relativeXValue) {\n let matcher = (oldPoint) => !oldPoint.touched &&\n oldPoint.index === optionsObject.index;\n if (dataSorting && dataSorting.matchByName) {\n matcher = (oldPoint) => !oldPoint.touched &&\n oldPoint.name === optionsObject.name;\n }\n else if (this.options.relativeXValue) {\n matcher = (oldPoint) => !oldPoint.touched &&\n oldPoint.options.x === optionsObject.x;\n }\n matchingPoint = find(oldData, matcher);\n // Add unmatched point as a new point\n if (!matchingPoint) {\n return void 0;\n }\n }\n if (matchingPoint) {\n pointIndex = matchingPoint && matchingPoint.index;\n if (typeof pointIndex !== 'undefined') {\n matchedById = true;\n }\n }\n // Search for the same X in the existing data set\n if (typeof pointIndex === 'undefined' && isNumber(x)) {\n pointIndex = this.xData.indexOf(x, fromIndex);\n }\n // Reduce pointIndex if data is cropped\n if (pointIndex !== -1 &&\n typeof pointIndex !== 'undefined' &&\n this.cropped) {\n pointIndex = (pointIndex >= this.cropStart) ?\n pointIndex - this.cropStart : pointIndex;\n }\n if (!matchedById &&\n isNumber(pointIndex) &&\n oldData[pointIndex] && oldData[pointIndex].touched) {\n pointIndex = void 0;\n }\n return pointIndex;\n }\n /**\n * Internal function called from setData. If the point count is the same\n * as it was, or if there are overlapping X values, just run\n * Point.update which is cheaper, allows animation, and keeps references\n * to points. This also allows adding or removing points if the X-es\n * don't match.\n *\n * @private\n * @function Highcharts.Series#updateData\n */\n updateData(data, animation) {\n const options = this.options, dataSorting = options.dataSorting, oldData = this.points, pointsToAdd = [], requireSorting = this.requireSorting, equalLength = data.length === oldData.length;\n let hasUpdatedByKey, i, point, lastIndex, succeeded = true;\n this.xIncrement = null;\n // Iterate the new data\n data.forEach(function (pointOptions, i) {\n const optionsObject = (defined(pointOptions) &&\n this.pointClass.prototype.optionsToObject.call({ series: this }, pointOptions)) || {};\n let pointIndex;\n // Get the x of the new data point\n const x = optionsObject.x, id = optionsObject.id;\n if (id || isNumber(x)) {\n pointIndex = this.findPointIndex(optionsObject, lastIndex);\n // Matching X not found\n // or used already due to ununique x values (#8995),\n // add point (but later)\n if (pointIndex === -1 ||\n typeof pointIndex === 'undefined') {\n pointsToAdd.push(pointOptions);\n // Matching X found, update\n }\n else if (oldData[pointIndex] &&\n pointOptions !== options.data[pointIndex]) {\n oldData[pointIndex].update(pointOptions, false, null, false);\n // Mark it touched, below we will remove all points that\n // are not touched.\n oldData[pointIndex].touched = true;\n // Speed optimize by only searching after last known\n // index. Performs ~20% bettor on large data sets.\n if (requireSorting) {\n lastIndex = pointIndex + 1;\n }\n // Point exists, no changes, don't remove it\n }\n else if (oldData[pointIndex]) {\n oldData[pointIndex].touched = true;\n }\n // If the length is equal and some of the nodes had a\n // match in the same position, we don't want to remove\n // non-matches.\n if (!equalLength ||\n i !== pointIndex ||\n (dataSorting && dataSorting.enabled) ||\n this.hasDerivedData) {\n hasUpdatedByKey = true;\n }\n }\n else {\n // Gather all points that are not matched\n pointsToAdd.push(pointOptions);\n }\n }, this);\n // Remove points that don't exist in the updated data set\n if (hasUpdatedByKey) {\n i = oldData.length;\n while (i--) {\n point = oldData[i];\n if (point && !point.touched && point.remove) {\n point.remove(false, animation);\n }\n }\n // If we did not find keys (ids or x-values), and the length is the\n // same, update one-to-one\n }\n else if (equalLength && (!dataSorting || !dataSorting.enabled)) {\n data.forEach(function (point, i) {\n // .update doesn't exist on a linked, hidden series (#3709)\n // (#10187)\n if (point !== oldData[i].y && !oldData[i].destroyed) {\n oldData[i].update(point, false, null, false);\n }\n });\n // Don't add new points since those configs are used above\n pointsToAdd.length = 0;\n // Did not succeed in updating data\n }\n else {\n succeeded = false;\n }\n oldData.forEach(function (point) {\n if (point) {\n point.touched = false;\n }\n });\n if (!succeeded) {\n return false;\n }\n // Add new points\n pointsToAdd.forEach(function (point) {\n this.addPoint(point, false, null, null, false);\n }, this);\n if (this.xIncrement === null &&\n this.xData &&\n this.xData.length) {\n this.xIncrement = arrayMax(this.xData);\n this.autoIncrement();\n }\n return true;\n }\n /**\n * Apply a new set of data to the series and optionally redraw it. The\n * new data array is passed by reference (except in case of\n * `updatePoints`), and may later be mutated when updating the chart\n * data.\n *\n * Note the difference in behaviour when setting the same amount of\n * points, or a different amount of points, as handled by the\n * `updatePoints` parameter.\n *\n * @sample highcharts/members/series-setdata/\n * Set new data from a button\n * @sample highcharts/members/series-setdata-pie/\n * Set data in a pie\n * @sample stock/members/series-setdata/\n * Set new data in Highcharts Stock\n * @sample maps/members/series-setdata/\n * Set new data in Highmaps\n *\n * @function Highcharts.Series#setData\n *\n * @param {Array} data\n * Takes an array of data in the same format as described under\n * `series.{type}.data` for the given series type, for example a\n * line series would take data in the form described under\n * [series.line.data](https://api.highcharts.com/highcharts/series.line.data).\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If\n * doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw} after.\n *\n * @param {boolean|Partial} [animation]\n * When the updated data is the same length as the existing data,\n * points will be updated by default, and animation visualizes\n * how the points are changed. Set false to disable animation, or\n * a configuration object to set duration or easing.\n *\n * @param {boolean} [updatePoints=true]\n * When this is true, points will be updated instead of replaced\n * whenever possible. This occurs a) when the updated data is the\n * same length as the existing data, b) when points are matched\n * by their id's, or c) when points can be matched by X values.\n * This allows updating with animation and performs better. In\n * this case, the original array is not passed by reference. Set\n * `false` to prevent.\n */\n setData(data, redraw = true, animation, updatePoints) {\n var _a;\n const series = this, oldData = series.points, oldDataLength = (oldData && oldData.length) || 0, options = series.options, chart = series.chart, dataSorting = options.dataSorting, xAxis = series.xAxis, turboThreshold = options.turboThreshold, xData = this.xData, yData = this.yData, pointArrayMap = series.pointArrayMap, valueCount = pointArrayMap && pointArrayMap.length, keys = options.keys;\n let i, pt, updatedData, indexOfX = 0, indexOfY = 1, firstPoint = null, copiedData;\n if (!chart.options.chart.allowMutatingData) { // #4259\n // Remove old reference\n if (options.data) {\n delete series.options.data;\n }\n if (series.userOptions.data) {\n delete series.userOptions.data;\n }\n copiedData = merge(true, data);\n }\n data = copiedData || data || [];\n const dataLength = data.length;\n if (dataSorting && dataSorting.enabled) {\n data = this.sortData(data);\n }\n // First try to run Point.update which is cheaper, allows animation,\n // and keeps references to points.\n if (chart.options.chart.allowMutatingData &&\n updatePoints !== false &&\n dataLength &&\n oldDataLength &&\n !series.cropped &&\n !series.hasGroupedData &&\n series.visible &&\n // Soft updating has no benefit in boost, and causes JS error\n // (#8355)\n !series.boosted) {\n updatedData = this.updateData(data, animation);\n }\n if (!updatedData) {\n // Reset properties\n series.xIncrement = null;\n series.colorCounter = 0; // for series with colorByPoint (#1547)\n // Update parallel arrays\n this.parallelArrays.forEach(function (key) {\n series[key + 'Data'].length = 0;\n });\n // In turbo mode, only one- or twodimensional arrays of numbers\n // are allowed. The first value is tested, and we assume that\n // all the rest are defined the same way. Although the 'for'\n // loops are similar, they are repeated inside each if-else\n // conditional for max performance.\n if (turboThreshold && dataLength > turboThreshold) {\n firstPoint = series.getFirstValidPoint(data);\n if (isNumber(firstPoint)) { // assume all points are numbers\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n // Assume all points are arrays when first point is\n }\n else if (isArray(firstPoint)) {\n if (valueCount) { // [x, low, high] or [x, o, h, l, c]\n if (firstPoint.length === valueCount) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[0];\n yData[i] =\n pt.slice(1, valueCount + 1);\n }\n }\n }\n else { // [x, y]\n if (keys) {\n indexOfX = keys.indexOf('x');\n indexOfY = keys.indexOf('y');\n indexOfX = indexOfX >= 0 ? indexOfX : 0;\n indexOfY = indexOfY >= 0 ? indexOfY : 1;\n }\n if (firstPoint.length === 1) {\n indexOfY = 0;\n }\n if (indexOfX === indexOfY) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i][indexOfY];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[indexOfX];\n yData[i] = pt[indexOfY];\n }\n }\n }\n }\n else {\n // Highcharts expects configs to be numbers or arrays in\n // turbo mode\n error(12, false, chart);\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = { series: series };\n series.pointClass.prototype.applyOptions.apply(pt, [data[i]]);\n series.updateParallelArrays(pt, i);\n }\n }\n // Forgetting to cast strings to numbers is a common caveat when\n // handling CSV or JSON\n if (yData && isString(yData[0])) {\n error(14, true, chart);\n }\n series.data = [];\n series.options.data = series.userOptions.data = data;\n // destroy old points\n i = oldDataLength;\n while (i--) {\n (_a = oldData[i]) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n // reset minRange (#878)\n if (xAxis) {\n xAxis.minRange = xAxis.userMinRange;\n }\n // redraw\n series.isDirty = chart.isDirtyBox = true;\n series.isDirtyData = !!oldData;\n animation = false;\n }\n // Typically for pie series, points need to be processed and\n // generated prior to rendering the legend\n if (options.legendType === 'point') {\n this.processData();\n this.generatePoints();\n }\n if (redraw) {\n chart.redraw(animation);\n }\n }\n /**\n * Internal function to sort series data\n *\n * @private\n * @function Highcharts.Series#sortData\n * @param {Array} data\n * Force data grouping.\n */\n sortData(data) {\n const series = this, options = series.options, dataSorting = options.dataSorting, sortKey = dataSorting.sortKey || 'y', getPointOptionsObject = function (series, pointOptions) {\n return (defined(pointOptions) &&\n series.pointClass.prototype.optionsToObject.call({\n series: series\n }, pointOptions)) || {};\n };\n data.forEach(function (pointOptions, i) {\n data[i] = getPointOptionsObject(series, pointOptions);\n data[i].index = i;\n }, this);\n // Sorting\n const sortedData = data.concat().sort((a, b) => {\n const aValue = getNestedProperty(sortKey, a);\n const bValue = getNestedProperty(sortKey, b);\n return bValue < aValue ? -1 : bValue > aValue ? 1 : 0;\n });\n // Set x value depending on the position in the array\n sortedData.forEach(function (point, i) {\n point.x = i;\n }, this);\n // Set the same x for linked series points if they don't have their\n // own sorting\n if (series.linkedSeries) {\n series.linkedSeries.forEach(function (linkedSeries) {\n const options = linkedSeries.options, seriesData = options.data;\n if ((!options.dataSorting ||\n !options.dataSorting.enabled) &&\n seriesData) {\n seriesData.forEach(function (pointOptions, i) {\n seriesData[i] = getPointOptionsObject(linkedSeries, pointOptions);\n if (data[i]) {\n seriesData[i].x = data[i].x;\n seriesData[i].index = i;\n }\n });\n linkedSeries.setData(seriesData, false);\n }\n });\n }\n return data;\n }\n /**\n * Internal function to process the data by cropping away unused data\n * points if the series is longer than the crop threshold. This saves\n * computing time for large series.\n *\n * @private\n * @function Highcharts.Series#getProcessedData\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n getProcessedData(forceExtremesFromAll) {\n const series = this, xAxis = series.xAxis, options = series.options, cropThreshold = options.cropThreshold, getExtremesFromAll = forceExtremesFromAll ||\n series.getExtremesFromAll ||\n options.getExtremesFromAll, // #4599\n isCartesian = series.isCartesian, val2lin = xAxis && xAxis.val2lin, isLog = !!(xAxis && xAxis.logarithmic);\n let croppedData, cropped, cropStart = 0, distance, closestPointRange, i, // loop variable\n xExtremes, min, max, \n // copied during slice operation:\n processedXData = series.xData, processedYData = series.yData, throwOnUnsorted = series.requireSorting, updatingNames = false;\n const dataLength = processedXData.length;\n if (xAxis) {\n // corrected for log axis (#3053)\n xExtremes = xAxis.getExtremes();\n min = xExtremes.min;\n max = xExtremes.max;\n updatingNames = !!(xAxis.categories && !xAxis.names.length);\n }\n // optionally filter out points outside the plot area\n if (isCartesian &&\n series.sorted &&\n !getExtremesFromAll &&\n (!cropThreshold ||\n dataLength > cropThreshold ||\n series.forceCrop)) {\n // it's outside current extremes\n if (processedXData[dataLength - 1] < min ||\n processedXData[0] > max) {\n processedXData = [];\n processedYData = [];\n // only crop if it's actually spilling out\n }\n else if (series.yData && (processedXData[0] < min ||\n processedXData[dataLength - 1] > max)) {\n croppedData = this.cropData(series.xData, series.yData, min, max);\n processedXData = croppedData.xData;\n processedYData = croppedData.yData;\n cropStart = croppedData.start;\n cropped = true;\n }\n }\n // Find the closest distance between processed points\n i = processedXData.length || 1;\n while (--i) {\n distance = (isLog ?\n (val2lin(processedXData[i]) -\n val2lin(processedXData[i - 1])) :\n (processedXData[i] -\n processedXData[i - 1]));\n if (distance > 0 &&\n (typeof closestPointRange === 'undefined' ||\n distance < closestPointRange)) {\n closestPointRange = distance;\n // Unsorted data is not supported by the line tooltip, as well\n // as data grouping and navigation in Stock charts (#725) and\n // width calculation of columns (#1900).\n // Avoid warning during the premature processing pass in\n // updateNames (#16104).\n }\n else if (distance < 0 && throwOnUnsorted && !updatingNames) {\n error(15, false, series.chart);\n throwOnUnsorted = false; // Only once\n }\n }\n return {\n xData: processedXData,\n yData: processedYData,\n cropped: cropped,\n cropStart: cropStart,\n closestPointRange: closestPointRange\n };\n }\n /**\n * Internal function to apply processed data.\n * In Highcharts Stock, this function is extended to provide data grouping.\n *\n * @private\n * @function Highcharts.Series#processData\n * @param {boolean} [force]\n * Force data grouping.\n */\n processData(force) {\n const series = this, xAxis = series.xAxis;\n // If the series data or axes haven't changed, don't go through\n // this. Return false to pass the message on to override methods\n // like in data grouping.\n if (series.isCartesian &&\n !series.isDirty &&\n !xAxis.isDirty &&\n !series.yAxis.isDirty &&\n !force) {\n return false;\n }\n const processedData = series.getProcessedData();\n // Record the properties\n series.cropped = processedData.cropped; // undefined or true\n series.cropStart = processedData.cropStart;\n series.processedXData = processedData.xData;\n series.processedYData = processedData.yData;\n series.closestPointRange = (series.basePointRange = processedData.closestPointRange);\n fireEvent(series, 'afterProcessData');\n }\n /**\n * Iterate over xData and crop values between min and max. Returns\n * object containing crop start/end cropped xData with corresponding\n * part of yData, dataMin and dataMax within the cropped range.\n *\n * @private\n * @function Highcharts.Series#cropData\n */\n cropData(xData, yData, min, max, cropShoulder) {\n const dataLength = xData.length;\n let i, j, cropStart = 0, cropEnd = dataLength;\n // line-type series need one point outside\n cropShoulder = pick(cropShoulder, this.cropShoulder);\n // iterate up to find slice start\n for (i = 0; i < dataLength; i++) {\n if (xData[i] >= min) {\n cropStart = Math.max(0, i - cropShoulder);\n break;\n }\n }\n // proceed to find slice end\n for (j = i; j < dataLength; j++) {\n if (xData[j] > max) {\n cropEnd = j + cropShoulder;\n break;\n }\n }\n return {\n xData: xData.slice(cropStart, cropEnd),\n yData: yData.slice(cropStart, cropEnd),\n start: cropStart,\n end: cropEnd\n };\n }\n /**\n * Generate the data point after the data has been processed by cropping\n * away unused points and optionally grouped in Highcharts Stock.\n *\n * @private\n * @function Highcharts.Series#generatePoints\n */\n generatePoints() {\n const series = this, options = series.options, dataOptions = (series.processedData || options.data), processedXData = series.processedXData, processedYData = series.processedYData, PointClass = series.pointClass, processedDataLength = processedXData.length, cropStart = series.cropStart || 0, hasGroupedData = series.hasGroupedData, keys = options.keys, points = [], groupCropStartIndex = (options.dataGrouping &&\n options.dataGrouping.groupAll ?\n cropStart :\n 0);\n let dataLength, cursor, point, i, data = series.data;\n if (!data && !hasGroupedData) {\n const arr = [];\n arr.length = dataOptions.length;\n data = series.data = arr;\n }\n if (keys && hasGroupedData) {\n // grouped data has already applied keys (#6590)\n series.options.keys = false;\n }\n for (i = 0; i < processedDataLength; i++) {\n cursor = cropStart + i;\n if (!hasGroupedData) {\n point = data[cursor];\n // #970:\n if (!point &&\n typeof dataOptions[cursor] !== 'undefined') {\n data[cursor] = point = (new PointClass()).init(series, dataOptions[cursor], processedXData[i]);\n }\n }\n else {\n // splat the y data in case of ohlc data array\n point = (new PointClass()).init(series, [processedXData[i]].concat(splat(processedYData[i])));\n point.dataGroup = series.groupMap[groupCropStartIndex + i];\n if (point.dataGroup.options) {\n point.options = point.dataGroup.options;\n extend(point, point.dataGroup.options);\n // Collision of props and options (#9770)\n delete point.dataLabels;\n }\n }\n if (point) { // #6279\n /**\n * Contains the point's index in the `Series.points` array.\n *\n * @name Highcharts.Point#index\n * @type {number}\n * @readonly\n */\n // For faster access in Point.update\n point.index = hasGroupedData ?\n (groupCropStartIndex + i) : cursor;\n points[i] = point;\n }\n }\n // restore keys options (#6590)\n series.options.keys = keys;\n // Hide cropped-away points - this only runs when the number of\n // points is above cropThreshold, or when swithching view from\n // non-grouped data to grouped data (#637)\n if (data &&\n (processedDataLength !== (dataLength = data.length) ||\n hasGroupedData)) {\n for (i = 0; i < dataLength; i++) {\n // when has grouped data, clear all points\n if (i === cropStart && !hasGroupedData) {\n i += processedDataLength;\n }\n if (data[i]) {\n data[i].destroyElements();\n data[i].plotX = void 0; // #1003\n }\n }\n }\n /**\n * Read only. An array containing those values converted to points.\n * In case the series data length exceeds the `cropThreshold`, or if\n * the data is grouped, `series.data` doesn't contain all the\n * points. Also, in case a series is hidden, the `data` array may be\n * empty. To access raw values, `series.options.data` will always be\n * up to date. `Series.data` only contains the points that have been\n * created on demand. To modify the data, use\n * {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @see Series.points\n *\n * @name Highcharts.Series#data\n * @type {Array}\n */\n series.data = data;\n /**\n * An array containing all currently visible point objects. In case\n * of cropping, the cropped-away points are not part of this array.\n * The `series.points` array starts at `series.cropStart` compared\n * to `series.data` and `series.options.data`. If however the series\n * data is grouped, these can't be correlated one to one. To modify\n * the data, use {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @name Highcharts.Series#points\n * @type {Array}\n */\n series.points = points;\n fireEvent(this, 'afterGeneratePoints');\n }\n /**\n * Get current X extremes for the visible data.\n *\n * @private\n * @function Highcharts.Series#getXExtremes\n * @param {Array} xData\n * The data to inspect. Defaults to the current data within the visible\n * range.\n */\n getXExtremes(xData) {\n return {\n min: arrayMin(xData),\n max: arrayMax(xData)\n };\n }\n /**\n * Calculate Y extremes for the visible data. The result is returned\n * as an object with `dataMin` and `dataMax` properties.\n *\n * @private\n * @function Highcharts.Series#getExtremes\n * @param {Array} [yData]\n * The data to inspect. Defaults to the current data within the visible\n * range.\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n getExtremes(yData, forceExtremesFromAll) {\n const xAxis = this.xAxis, yAxis = this.yAxis, xData = this.processedXData || this.xData, activeYData = [], \n // Handle X outside the viewed area. This does not work with\n // non-sorted data like scatter (#7639).\n shoulder = this.requireSorting ? this.cropShoulder : 0, positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false;\n // #2117, need to compensate for log X axis\n let xExtremes, validValue, withinRange, x, y, i, j, xMin = 0, xMax = 0, activeCounter = 0;\n yData = yData || this.stackedYData || this.processedYData || [];\n const yDataLength = yData.length;\n if (xAxis) {\n xExtremes = xAxis.getExtremes();\n xMin = xExtremes.min;\n xMax = xExtremes.max;\n }\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n // For points within the visible range, including the first\n // point outside the visible range (#7061), consider y extremes.\n validValue = ((isNumber(y) || isArray(y)) &&\n ((y.length || y > 0) || !positiveValuesOnly));\n withinRange = (forceExtremesFromAll ||\n this.getExtremesFromAll ||\n this.options.getExtremesFromAll ||\n this.cropped ||\n !xAxis || // for colorAxis support\n ((xData[i + shoulder] || x) >= xMin &&\n (xData[i - shoulder] || x) <= xMax));\n if (validValue && withinRange) {\n j = y.length;\n if (j) { // array, like ohlc or range data\n while (j--) {\n if (isNumber(y[j])) { // #7380, #11513\n activeYData[activeCounter++] = y[j];\n }\n }\n }\n else {\n activeYData[activeCounter++] = y;\n }\n }\n }\n const dataExtremes = {\n activeYData,\n dataMin: arrayMin(activeYData),\n dataMax: arrayMax(activeYData)\n };\n fireEvent(this, 'afterGetExtremes', { dataExtremes });\n return dataExtremes;\n }\n /**\n * Set the current data extremes as `dataMin` and `dataMax` on the\n * Series item. Use this only when the series properties should be\n * updated.\n *\n * @private\n * @function Highcharts.Series#applyExtremes\n */\n applyExtremes() {\n const dataExtremes = this.getExtremes();\n /**\n * Contains the minimum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMin\n * @type {number|undefined}\n * @readonly\n */\n this.dataMin = dataExtremes.dataMin;\n /**\n * Contains the maximum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMax\n * @type {number|undefined}\n * @readonly\n */\n this.dataMax = dataExtremes.dataMax;\n return dataExtremes;\n }\n /**\n * Find and return the first non null point in the data\n *\n * @private\n * @function Highcharts.Series.getFirstValidPoint\n * @param {Array} data\n * Array of options for points\n */\n getFirstValidPoint(data) {\n const dataLength = data.length;\n let i = 0, firstPoint = null;\n while (firstPoint === null && i < dataLength) {\n firstPoint = data[i];\n i++;\n }\n return firstPoint;\n }\n /**\n * Translate data points from raw data values to chart specific\n * positioning data needed later in the `drawPoints` and `drawGraph`\n * functions. This function can be overridden in plugins and custom\n * series type implementations.\n *\n * @function Highcharts.Series#translate\n *\n * @emits Highcharts.Series#events:translate\n */\n translate() {\n var _a;\n if (!this.processedXData) { // hidden series\n this.processData();\n }\n this.generatePoints();\n const series = this, options = series.options, stacking = options.stacking, xAxis = series.xAxis, categories = xAxis.categories, enabledDataSorting = series.enabledDataSorting, yAxis = series.yAxis, points = series.points, dataLength = points.length, pointPlacement = series.pointPlacementToXValue(), // #7860\n dynamicallyPlaced = Boolean(pointPlacement), threshold = options.threshold, stackThreshold = options.startFromThreshold ? threshold : 0, zoneAxis = this.zoneAxis || 'y';\n let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;\n /**\n * Plotted coordinates need to be within a limited range. Drawing\n * too far outside the viewport causes various rendering issues\n * (#3201, #3923, #7555).\n * @private\n */\n function limitedRange(val) {\n return clamp(val, -1e5, 1e5);\n }\n // Translate each point\n for (i = 0; i < dataLength; i++) {\n const point = points[i], xValue = point.x;\n let stackItem, stackValues, yValue = point.y, lowValue = point.low;\n const stacks = stacking && ((_a = yAxis.stacking) === null || _a === void 0 ? void 0 : _a.stacks[(series.negStacks &&\n yValue <\n (stackThreshold ? 0 : threshold) ?\n '-' :\n '') + series.stackKey]);\n plotX = xAxis.translate(// #3923\n xValue, false, false, false, true, pointPlacement);\n /**\n * The translated X value for the point in terms of pixels. Relative\n * to the X axis position if the series has one, otherwise relative\n * to the plot area. Depending on the series type this value might\n * not be defined.\n * @name Highcharts.Point#plotX\n * @type {number|undefined}\n */\n point.plotX = isNumber(plotX) ? correctFloat(// #5236\n limitedRange(plotX) // #3923\n ) : void 0;\n // Calculate the bottom y value for stacked series\n if (stacking &&\n series.visible &&\n stacks &&\n stacks[xValue]) {\n stackIndicator = series.getStackIndicator(stackIndicator, xValue, series.index);\n if (!point.isNull && stackIndicator.key) {\n stackItem = stacks[xValue];\n stackValues = stackItem.points[stackIndicator.key];\n }\n if (stackItem && isArray(stackValues)) {\n lowValue = stackValues[0];\n yValue = stackValues[1];\n if (lowValue === stackThreshold &&\n stackIndicator.key === stacks[xValue].base) {\n lowValue = pick(isNumber(threshold) ? threshold : yAxis.min);\n }\n // #1200, #1232\n if (yAxis.positiveValuesOnly &&\n defined(lowValue) &&\n lowValue <= 0) {\n lowValue = void 0;\n }\n point.total = point.stackTotal = pick(stackItem.total);\n point.percentage = defined(point.y) && stackItem.total ?\n (point.y / stackItem.total * 100) : void 0;\n point.stackY = yValue;\n // in case of variwide series (where widths of points are\n // different in most cases), stack labels are positioned\n // wrongly, so the call of the setOffset is omited here and\n // labels are correctly positioned later, at the end of the\n // variwide's translate function (#10962)\n if (!series.irregularWidths) {\n stackItem.setOffset(series.pointXOffset || 0, series.barW || 0, void 0, void 0, void 0, series.xAxis);\n }\n }\n }\n // Set translated yBottom or remove it\n point.yBottom = defined(lowValue) ?\n limitedRange(yAxis.translate(lowValue, false, true, false, true)) :\n void 0;\n // General hook, used for Highcharts Stock compare and cumulative\n if (series.dataModify) {\n yValue = series.dataModify.modifyValue(yValue, i);\n }\n // Set the the plotY value, reset it for redraws #3201, #18422\n let plotY;\n if (isNumber(yValue) && point.plotX !== void 0) {\n plotY = yAxis.translate(yValue, false, true, false, true);\n plotY = isNumber(plotY) ? limitedRange(plotY) : void 0;\n }\n /**\n * The translated Y value for the point in terms of pixels. Relative\n * to the Y axis position if the series has one, otherwise relative\n * to the plot area. Depending on the series type this value might\n * not be defined.\n * @name Highcharts.Point#plotY\n * @type {number|undefined}\n */\n point.plotY = plotY;\n point.isInside = this.isPointInside(point);\n // Set client related positions for mouse tracking\n point.clientX = dynamicallyPlaced ?\n correctFloat(xAxis.translate(xValue, false, false, false, true, pointPlacement)) :\n plotX; // #1514, #5383, #5518\n // Negative points. For bubble charts, this means negative z\n // values (#9728)\n point.negative = point[zoneAxis] < (options[zoneAxis + 'Threshold'] ||\n threshold ||\n 0);\n // some API data\n point.category = pick(categories && categories[point.x], point.x);\n // Determine auto enabling of markers (#3635, #5099)\n if (!point.isNull && point.visible !== false) {\n if (typeof lastPlotX !== 'undefined') {\n closestPointRangePx = Math.min(closestPointRangePx, Math.abs(plotX - lastPlotX));\n }\n lastPlotX = plotX;\n }\n // Find point zone\n point.zone = this.zones.length ? point.getZone() : void 0;\n // Animate new points with data sorting\n if (!point.graphic && series.group && enabledDataSorting) {\n point.isNew = true;\n }\n }\n series.closestPointRangePx = closestPointRangePx;\n fireEvent(this, 'afterTranslate');\n }\n /**\n * Return the series points with null points filtered out.\n *\n * @function Highcharts.Series#getValidPoints\n *\n * @param {Array} [points]\n * The points to inspect, defaults to {@link Series.points}.\n *\n * @param {boolean} [insideOnly=false]\n * Whether to inspect only the points that are inside the visible view.\n *\n * @param {boolean} [allowNull=false]\n * Whether to allow null points to pass as valid points.\n *\n * @return {Array}\n * The valid points.\n */\n getValidPoints(points, insideOnly, allowNull) {\n const chart = this.chart;\n // #3916, #5029, #5085\n return (points || this.points || []).filter(function (point) {\n const { plotX, plotY } = point, \n // Undefined plotY is treated as null when negative values\n // in log axis (#18422)\n asNull = !allowNull && (point.isNull || !isNumber(plotY));\n if (asNull || (insideOnly && !chart.isInsidePlot(plotX, plotY, { inverted: chart.inverted }))) {\n return false;\n }\n return point.visible !== false;\n });\n }\n /**\n * Get the clipping for the series. Could be called for a series to\n * initiate animating the clip or to set the final clip (only width\n * and x).\n *\n * @private\n * @function Highcharts.Series#getClip\n */\n getClipBox() {\n const { chart, xAxis, yAxis } = this;\n // If no axes on the series, use global clipBox\n const seriesBox = merge(chart.clipBox);\n // Otherwise, use clipBox.width which is corrected for plotBorderWidth\n // and clipOffset\n if (xAxis && xAxis.len !== chart.plotSizeX) {\n seriesBox.width = xAxis.len;\n }\n if (yAxis && yAxis.len !== chart.plotSizeY) {\n seriesBox.height = yAxis.len;\n }\n return seriesBox;\n }\n /**\n * Get the shared clip key, creating it if it doesn't exist.\n *\n * @private\n * @function Highcharts.Series#getSharedClipKey\n */\n getSharedClipKey() {\n this.sharedClipKey = (this.options.xAxis || 0) + ',' +\n (this.options.yAxis || 0);\n return this.sharedClipKey;\n }\n /**\n * Set the clipping for the series. For animated series the clip is later\n * modified.\n *\n * @private\n * @function Highcharts.Series#setClip\n */\n setClip() {\n const { chart, group, markerGroup } = this, sharedClips = chart.sharedClips, renderer = chart.renderer, clipBox = this.getClipBox(), sharedClipKey = this.getSharedClipKey(); // #4526\n let clipRect = sharedClips[sharedClipKey];\n // If a clipping rectangle for the same set of axes does not exist,\n // create it\n if (!clipRect) {\n sharedClips[sharedClipKey] = clipRect = renderer.clipRect(clipBox);\n // When setting chart size, or when the series is rendered again before\n // starting animating, in compliance to a responsive rule\n }\n else {\n clipRect.animate(clipBox);\n }\n if (group) {\n // When clip is false, reset to no clip after animation\n group.clip(this.options.clip === false ? void 0 : clipRect);\n }\n // Unclip temporary animation clip\n if (markerGroup) {\n markerGroup.clip();\n }\n }\n /**\n * Animate in the series. Called internally twice. First with the `init`\n * parameter set to true, which sets up the initial state of the\n * animation. Then when ready, it is called with the `init` parameter\n * undefined, in order to perform the actual animation.\n *\n * @function Highcharts.Series#animate\n *\n * @param {boolean} [init]\n * Initialize the animation.\n */\n animate(init) {\n const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation), \n // The key for temporary animation clips\n animationClipKey = [\n this.getSharedClipKey(),\n animation.duration,\n animation.easing,\n animation.defer\n ].join(',');\n let animationClipRect = chart.sharedClips[animationClipKey], markerAnimationClipRect = chart.sharedClips[animationClipKey + 'm'];\n // Initialize the animation. Set up the clipping rectangle.\n if (init && group) {\n const clipBox = this.getClipBox();\n // Create temporary animation clips\n if (!animationClipRect) {\n clipBox.width = 0;\n if (inverted) {\n clipBox.x = chart.plotHeight;\n }\n animationClipRect = chart.renderer.clipRect(clipBox);\n chart.sharedClips[animationClipKey] = animationClipRect;\n // The marker clip box. The number 99 is a safe margin to avoid\n // markers being clipped during animation.\n const markerClipBox = {\n x: inverted ? -99 : -99,\n y: inverted ? -99 : -99,\n width: inverted ? chart.plotWidth + 199 : 99,\n height: inverted ? 99 : chart.plotHeight + 199\n };\n markerAnimationClipRect = chart.renderer.clipRect(markerClipBox);\n chart.sharedClips[animationClipKey + 'm'] = markerAnimationClipRect;\n }\n else {\n // When height changes during animation, typically due to\n // responsive settings\n animationClipRect.attr('height', clipBox.height);\n }\n group.clip(animationClipRect);\n if (markerGroup) {\n markerGroup.clip(markerAnimationClipRect);\n }\n // Run the animation\n }\n else if (animationClipRect &&\n // Only first series in this pane\n !animationClipRect.hasClass('highcharts-animating')) {\n const finalBox = this.getClipBox(), step = animation.step;\n // Only do this when there are actually markers\n if (markerGroup && markerGroup.element.childNodes.length) {\n // To provide as smooth animation as possible, update the marker\n // group clipping in steps of the main group animation\n animation.step = function (val, fx) {\n if (step) {\n step.apply(fx, arguments);\n }\n if (fx.prop === 'width' &&\n markerAnimationClipRect &&\n markerAnimationClipRect.element) {\n markerAnimationClipRect.attr(inverted ? 'height' : 'width', val + 99);\n }\n };\n }\n animationClipRect\n .addClass('highcharts-animating')\n .animate(finalBox, animation);\n }\n }\n /**\n * This runs after animation to land on the final plot clipping.\n *\n * @private\n * @function Highcharts.Series#afterAnimate\n *\n * @emits Highcharts.Series#event:afterAnimate\n */\n afterAnimate() {\n this.setClip();\n // Destroy temporary clip rectangles that are no longer in use\n objectEach(this.chart.sharedClips, (clip, key, sharedClips) => {\n if (clip && !this.chart.container.querySelector(`[clip-path=\"url(#${clip.id})\"]`)) {\n clip.destroy();\n delete sharedClips[key];\n }\n });\n this.finishedAnimating = true;\n fireEvent(this, 'afterAnimate');\n }\n /**\n * Draw the markers for line-like series types, and columns or other\n * graphical representation for {@link Point} objects for other series\n * types. The resulting element is typically stored as\n * {@link Point.graphic}, and is created on the first call and updated\n * and moved on subsequent calls.\n *\n * @function Highcharts.Series#drawPoints\n */\n drawPoints(points = this.points) {\n const series = this, chart = series.chart, styledMode = chart.styledMode, { colorAxis, options } = series, seriesMarkerOptions = options.marker, markerGroup = series[series.specialGroup || 'markerGroup'], xAxis = series.xAxis, globallyEnabled = pick(seriesMarkerOptions.enabled, !xAxis || xAxis.isRadial ? true : null, \n // Use larger or equal as radius is null in bubbles (#6321)\n series.closestPointRangePx >= (seriesMarkerOptions.enabledThreshold *\n seriesMarkerOptions.radius));\n let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;\n if (seriesMarkerOptions.enabled !== false ||\n series._hasPointMarkers) {\n for (i = 0; i < points.length; i++) {\n point = points[i];\n graphic = point.graphic;\n verb = graphic ? 'animate' : 'attr';\n pointMarkerOptions = point.marker || {};\n hasPointMarker = !!point.marker;\n const shouldDrawMarker = ((globallyEnabled &&\n typeof pointMarkerOptions.enabled === 'undefined') || pointMarkerOptions.enabled) && !point.isNull && point.visible !== false;\n // only draw the point if y is defined\n if (shouldDrawMarker) {\n // Shortcuts\n const symbol = pick(pointMarkerOptions.symbol, series.symbol, 'rect');\n markerAttribs = series.markerAttribs(point, (point.selected && 'select'));\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = xAxis.reversed ?\n -(markerAttribs.width || 0) :\n xAxis.width;\n }\n const isInside = point.isInside !== false;\n if (!graphic &&\n isInside &&\n ((markerAttribs.width || 0) > 0 || point.hasImage)) {\n /**\n * SVG graphic representing the point in the chart. In\n * some cases it may be a hidden graphic to improve\n * accessibility.\n *\n * Typically this is a simple shape, like a `rect`\n * for column charts or `path` for line markers, but\n * for some complex series types like boxplot or 3D\n * charts, the graphic may be a `g` element\n * containing other shapes. The graphic is generated\n * the first time {@link Series#drawPoints} runs,\n * and updated and moved on subsequent runs.\n *\n * @see Highcharts.Point#graphics\n *\n * @name Highcharts.Point#graphic\n * @type {Highcharts.SVGElement|undefined}\n */\n point.graphic = graphic = chart.renderer\n .symbol(symbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height, hasPointMarker ?\n pointMarkerOptions :\n seriesMarkerOptions)\n .add(markerGroup);\n // Sliding animation for new points\n if (series.enabledDataSorting &&\n chart.hasRendered) {\n graphic.attr({\n x: point.startXPos\n });\n verb = 'animate';\n }\n }\n if (graphic && verb === 'animate') { // update\n // Since the marker group isn't clipped, each\n // individual marker must be toggled\n graphic[isInside ? 'show' : 'hide'](isInside)\n .animate(markerAttribs);\n }\n // Presentational attributes\n if (graphic) {\n const pointAttr = series.pointAttribs(point, ((styledMode || !point.selected) ?\n void 0 :\n 'select'));\n if (!styledMode) {\n graphic[verb](pointAttr);\n }\n else if (colorAxis) { // #14114\n graphic['css']({\n fill: pointAttr.fill\n });\n }\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n }\n }\n }\n /**\n * Get non-presentational attributes for a point. Used internally for\n * both styled mode and classic. Can be overridden for different series\n * types.\n *\n * @see Series#pointAttribs\n *\n * @function Highcharts.Series#markerAttribs\n *\n * @param {Highcharts.Point} point\n * The Point to inspect.\n *\n * @param {string} [state]\n * The state, can be either `hover`, `select` or undefined.\n *\n * @return {Highcharts.SVGAttributes}\n * A hash containing those attributes that are not settable from CSS.\n */\n markerAttribs(point, state) {\n const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||\n seriesMarkerOptions.symbol), attribs = {};\n let seriesStateOptions, pointStateOptions, radius = pick(pointMarkerOptions.radius, seriesMarkerOptions && seriesMarkerOptions.radius);\n // Handle hover and select states\n if (state) {\n seriesStateOptions = seriesMarkerOptions.states[state];\n pointStateOptions = pointMarkerOptions.states &&\n pointMarkerOptions.states[state];\n radius = pick(pointStateOptions && pointStateOptions.radius, seriesStateOptions && seriesStateOptions.radius, radius && radius + (seriesStateOptions && seriesStateOptions.radiusPlus ||\n 0));\n }\n point.hasImage = symbol && symbol.indexOf('url') === 0;\n if (point.hasImage) {\n radius = 0; // and subsequently width and height is not set\n }\n const pos = point.pos();\n if (isNumber(radius) && pos) {\n attribs.x = pos[0] - radius;\n attribs.y = pos[1] - radius;\n if (seriesOptions.crisp) {\n // Math.floor for #1843:\n attribs.x = Math.floor(attribs.x);\n }\n }\n if (radius) {\n attribs.width = attribs.height = 2 * radius;\n }\n return attribs;\n }\n /**\n * Internal function to get presentational attributes for each point.\n * Unlike {@link Series#markerAttribs}, this function should return\n * those attributes that can also be set in CSS. In styled mode,\n * `pointAttribs` won't be called.\n *\n * @private\n * @function Highcharts.Series#pointAttribs\n *\n * @param {Highcharts.Point} [point]\n * The point instance to inspect.\n *\n * @param {string} [state]\n * The point state, can be either `hover`, `select` or 'normal'. If\n * undefined, normal state is assumed.\n *\n * @return {Highcharts.SVGAttributes}\n * The presentational attributes to be set on the point.\n */\n pointAttribs(point, state) {\n const seriesMarkerOptions = this.options.marker, pointOptions = point && point.options, pointMarkerOptions = ((pointOptions && pointOptions.marker) || {}), pointColorOption = pointOptions && pointOptions.color, pointColor = point && point.color, zoneColor = point && point.zone && point.zone.color;\n let seriesStateOptions, pointStateOptions, color = this.color, fill, stroke, strokeWidth = pick(pointMarkerOptions.lineWidth, seriesMarkerOptions.lineWidth), opacity = 1;\n color = (pointColorOption ||\n zoneColor ||\n pointColor ||\n color);\n fill = (pointMarkerOptions.fillColor ||\n seriesMarkerOptions.fillColor ||\n color);\n stroke = (pointMarkerOptions.lineColor ||\n seriesMarkerOptions.lineColor ||\n color);\n // Handle hover and select states\n state = state || 'normal';\n if (state) {\n seriesStateOptions = (seriesMarkerOptions.states[state] || {});\n pointStateOptions = (pointMarkerOptions.states &&\n pointMarkerOptions.states[state]) || {};\n strokeWidth = pick(pointStateOptions.lineWidth, seriesStateOptions.lineWidth, strokeWidth + pick(pointStateOptions.lineWidthPlus, seriesStateOptions.lineWidthPlus, 0));\n fill = (pointStateOptions.fillColor ||\n seriesStateOptions.fillColor ||\n fill);\n stroke = (pointStateOptions.lineColor ||\n seriesStateOptions.lineColor ||\n stroke);\n opacity = pick(pointStateOptions.opacity, seriesStateOptions.opacity, opacity);\n }\n return {\n 'stroke': stroke,\n 'stroke-width': strokeWidth,\n 'fill': fill,\n 'opacity': opacity\n };\n }\n /**\n * Clear DOM objects and free up memory.\n *\n * @private\n * @function Highcharts.Series#destroy\n *\n * @emits Highcharts.Series#event:destroy\n */\n destroy(keepEventsForUpdate) {\n const series = this, chart = series.chart, issue134 = /AppleWebKit\\/533/.test(win.navigator.userAgent), data = series.data || [];\n let destroy, i, point, axis;\n // add event hook\n fireEvent(series, 'destroy', { keepEventsForUpdate });\n // remove events\n this.removeEvents(keepEventsForUpdate);\n // erase from axes\n (series.axisTypes || []).forEach(function (AXIS) {\n axis = series[AXIS];\n if (axis && axis.series) {\n erase(axis.series, series);\n axis.isDirty = axis.forceRedraw = true;\n }\n });\n // remove legend items\n if (series.legendItem) {\n series.chart.legend.destroyItem(series);\n }\n // destroy all points with their elements\n i = data.length;\n while (i--) {\n point = data[i];\n if (point && point.destroy) {\n point.destroy();\n }\n }\n if (series.clips) {\n series.clips.forEach((clip) => clip.destroy());\n }\n // Clear the animation timeout if we are destroying the series\n // during initial animation\n U.clearTimeout(series.animationTimeout);\n // Destroy all SVGElements associated to the series\n objectEach(series, function (val, prop) {\n // Survive provides a hook for not destroying\n if (val instanceof SVGElement && !val.survive) {\n // issue 134 workaround\n destroy = issue134 && prop === 'group' ?\n 'hide' :\n 'destroy';\n val[destroy]();\n }\n });\n // remove from hoverSeries\n if (chart.hoverSeries === series) {\n chart.hoverSeries = void 0;\n }\n erase(chart.series, series);\n chart.orderSeries();\n // clear all members\n objectEach(series, function (val, prop) {\n if (!keepEventsForUpdate || prop !== 'hcEvents') {\n delete series[prop];\n }\n });\n }\n /**\n * Clip the graphs into zones for colors and styling.\n *\n * @private\n * @function Highcharts.Series#applyZones\n */\n applyZones() {\n const series = this, chart = this.chart, renderer = chart.renderer, zones = this.zones, clips = (this.clips || []), graph = this.graph, area = this.area, plotSizeMax = Math.max(chart.plotWidth, chart.plotHeight), axis = this[(this.zoneAxis || 'y') + 'Axis'], inverted = chart.inverted;\n let translatedFrom, translatedTo, clipAttr, extremes, reversed, horiz, pxRange, pxPosMin, pxPosMax, zoneArea, zoneGraph, ignoreZones = false;\n if (zones.length &&\n (graph || area) &&\n axis &&\n typeof axis.min !== 'undefined') {\n reversed = axis.reversed;\n horiz = axis.horiz;\n // The use of the Color Threshold assumes there are no gaps\n // so it is safe to hide the original graph and area\n // unless it is not waterfall series, then use showLine property\n // to set lines between columns to be visible (#7862)\n if (graph && !this.showLine) {\n graph.hide();\n }\n if (area) {\n area.hide();\n }\n // Create the clips\n extremes = axis.getExtremes();\n zones.forEach(function (threshold, i) {\n translatedFrom = reversed ?\n (horiz ? chart.plotWidth : 0) :\n (horiz ? 0 : (axis.toPixels(extremes.min) || 0));\n translatedFrom = clamp(pick(translatedTo, translatedFrom), 0, plotSizeMax);\n translatedTo = clamp(Math.round(axis.toPixels(pick(threshold.value, extremes.max), true) || 0), 0, plotSizeMax);\n if (ignoreZones) {\n translatedFrom = translatedTo =\n axis.toPixels(extremes.max);\n }\n pxRange = Math.abs(translatedFrom - translatedTo);\n pxPosMin = Math.min(translatedFrom, translatedTo);\n pxPosMax = Math.max(translatedFrom, translatedTo);\n if (axis.isXAxis) {\n clipAttr = {\n x: inverted ? pxPosMax : pxPosMin,\n y: 0,\n width: pxRange,\n height: plotSizeMax\n };\n if (!horiz) {\n clipAttr.x = chart.plotHeight - clipAttr.x;\n }\n }\n else {\n clipAttr = {\n x: 0,\n y: inverted ? pxPosMax : pxPosMin,\n width: plotSizeMax,\n height: pxRange\n };\n if (horiz) {\n clipAttr.y = chart.plotWidth - clipAttr.y;\n }\n }\n if (clips[i]) {\n clips[i].animate(clipAttr);\n }\n else {\n clips[i] = renderer.clipRect(clipAttr);\n }\n // when no data, graph zone is not applied and after setData\n // clip was ignored. As a result, it should be applied each\n // time.\n zoneArea = series['zone-area-' + i];\n zoneGraph = series['zone-graph-' + i];\n if (graph && zoneGraph) {\n zoneGraph.clip(clips[i]);\n }\n if (area && zoneArea) {\n zoneArea.clip(clips[i]);\n }\n // if this zone extends out of the axis, ignore the others\n ignoreZones = threshold.value > extremes.max;\n // Clear translatedTo for indicators\n if (series.resetZones && translatedTo === 0) {\n translatedTo = void 0;\n }\n });\n this.clips = clips;\n }\n else if (series.visible) {\n // If zones were removed, restore graph and area\n if (graph) {\n graph.show();\n }\n if (area) {\n area.show();\n }\n }\n }\n /**\n * General abstraction for creating plot groups like series.group,\n * series.dataLabelsGroup and series.markerGroup. On subsequent calls,\n * the group will only be adjusted to the updated plot size.\n *\n * @private\n * @function Highcharts.Series#plotGroup\n */\n plotGroup(prop, name, visibility, zIndex, parent) {\n let group = this[prop];\n const isNew = !group, attrs = {\n visibility,\n zIndex: zIndex || 0.1 // Pointer logic uses this\n };\n // Avoid setting undefined opacity, or in styled mode\n if (typeof this.opacity !== 'undefined' &&\n !this.chart.styledMode && this.state !== 'inactive' // #13719\n ) {\n attrs.opacity = this.opacity;\n }\n // Generate it on first call\n if (isNew) {\n this[prop] = group = this.chart.renderer\n .g()\n .add(parent);\n }\n // Add the class names, and replace existing ones as response to\n // Series.update (#6660)\n group.addClass(('highcharts-' + name +\n ' highcharts-series-' + this.index +\n ' highcharts-' + this.type + '-series ' +\n (defined(this.colorIndex) ?\n 'highcharts-color-' + this.colorIndex + ' ' :\n '') +\n (this.options.className || '') +\n (group.hasClass('highcharts-tracker') ?\n ' highcharts-tracker' :\n '')), true);\n // Place it on first and subsequent (redraw) calls\n group.attr(attrs)[isNew ? 'attr' : 'animate'](this.getPlotBox(name));\n return group;\n }\n /**\n * Get the translation and scale for the plot area of this series.\n *\n * @function Highcharts.Series#getPlotBox\n */\n getPlotBox(name) {\n let horAxis = this.xAxis, vertAxis = this.yAxis;\n const chart = this.chart, inverted = (chart.inverted &&\n !chart.polar &&\n horAxis &&\n this.invertible !== false &&\n name === 'series');\n // Swap axes for inverted (#2339)\n if (chart.inverted) {\n horAxis = vertAxis;\n vertAxis = this.xAxis;\n }\n return {\n translateX: horAxis ? horAxis.left : chart.plotLeft,\n translateY: vertAxis ? vertAxis.top : chart.plotTop,\n rotation: inverted ? 90 : 0,\n rotationOriginX: inverted ?\n (horAxis.len - vertAxis.len) / 2 :\n 0,\n rotationOriginY: inverted ?\n (horAxis.len + vertAxis.len) / 2 :\n 0,\n scaleX: inverted ? -1 : 1,\n scaleY: 1\n };\n }\n /**\n * Removes the event handlers attached previously with addEvents.\n * @private\n * @function Highcharts.Series#removeEvents\n */\n removeEvents(keepEventsForUpdate) {\n const series = this;\n if (!keepEventsForUpdate) {\n // remove all events\n removeEvent(series);\n }\n if (series.eventsToUnbind.length) {\n // remove only internal events for proper update\n // #12355 - solves problem with multiple destroy events\n series.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n series.eventsToUnbind.length = 0;\n }\n }\n /**\n * Render the graph and markers. Called internally when first rendering\n * and later when redrawing the chart. This function can be extended in\n * plugins, but normally shouldn't be called directly.\n *\n * @function Highcharts.Series#render\n *\n * @emits Highcharts.Series#event:afterRender\n */\n render() {\n const series = this, chart = series.chart, options = series.options, animOptions = animObject(options.animation), visibility = series.visible ?\n 'inherit' : 'hidden', // #2597\n zIndex = options.zIndex, hasRendered = series.hasRendered, chartSeriesGroup = chart.seriesGroup, inverted = chart.inverted;\n let animDuration = (!series.finishedAnimating) ?\n animOptions.duration : 0;\n fireEvent(this, 'render');\n // the group\n const group = series.plotGroup('group', 'series', visibility, zIndex, chartSeriesGroup);\n series.markerGroup = series.plotGroup('markerGroup', 'markers', visibility, zIndex, chartSeriesGroup);\n // Initial clipping, applies to columns etc. (#3839).\n if (options.clip !== false) {\n series.setClip();\n }\n // Initialize the animation\n if (series.animate && animDuration) {\n series.animate(true);\n }\n // Draw the graph if any\n if (series.drawGraph) {\n series.drawGraph();\n series.applyZones();\n }\n // Draw the points\n if (series.visible) {\n series.drawPoints();\n }\n // Draw the data labels\n if (series.drawDataLabels) {\n series.drawDataLabels();\n }\n // In pie charts, slices are added to the DOM, but actual rendering\n // is postponed until labels reserved their space\n if (series.redrawPoints) {\n series.redrawPoints();\n }\n // draw the mouse tracking area\n if (series.drawTracker &&\n series.options.enableMouseTracking !== false) {\n series.drawTracker();\n }\n // Run the animation\n if (series.animate && animDuration) {\n series.animate();\n }\n // Call the afterAnimate function on animation complete (but don't\n // overwrite the animation.complete option which should be available\n // to the user).\n if (!hasRendered) {\n // Additional time if defer is defined before afterAnimate\n // will be triggered\n if (animDuration && animOptions.defer) {\n animDuration += animOptions.defer;\n }\n series.animationTimeout = syncTimeout(function () {\n series.afterAnimate();\n }, animDuration || 0);\n }\n // Means data is in accordance with what you see\n series.isDirty = false;\n // (See #322) series.isDirty = series.isDirtyData = false; // means\n // data is in accordance with what you see\n series.hasRendered = true;\n fireEvent(series, 'afterRender');\n }\n /**\n * Redraw the series. This function is called internally from\n * `chart.redraw` and normally shouldn't be called directly.\n * @private\n * @function Highcharts.Series#redraw\n */\n redraw() {\n // Cache it here as it is set to false in render, but used after\n const wasDirty = this.isDirty || this.isDirtyData;\n this.translate();\n this.render();\n if (wasDirty) { // #3868, #3945\n delete this.kdTree;\n }\n }\n /**\n * Find the nearest point from a pointer event. This applies to series that\n * use k-d-trees to get the nearest point. Native pointer events must be\n * normalized using `Pointer.normalize`, that adds `chartX` and `chartY`\n * properties.\n *\n * @sample highcharts/demo/synchronized-charts\n * Synchronized charts with tooltips\n *\n * @function Highcharts.Series#searchPoint\n *\n * @param {Highcharts.PointerEvent} e\n * The normalized pointer event\n * @param {boolean} [compareX=false]\n * Search only by the X value, not Y\n *\n * @return {Point|undefined}\n * The closest point to the pointer event\n */\n searchPoint(e, compareX) {\n const series = this, xAxis = series.xAxis, yAxis = series.yAxis, inverted = series.chart.inverted;\n return this.searchKDTree({\n clientX: inverted ?\n xAxis.len - e.chartY + xAxis.pos :\n e.chartX - xAxis.pos,\n plotY: inverted ?\n yAxis.len - e.chartX + yAxis.pos :\n e.chartY - yAxis.pos\n }, compareX, e);\n }\n /**\n * Build the k-d-tree that is used by mouse and touch interaction to get\n * the closest point. Line-like series typically have a one-dimensional\n * tree where points are searched along the X axis, while scatter-like\n * series typically search in two dimensions, X and Y.\n *\n * @private\n * @function Highcharts.Series#buildKDTree\n */\n buildKDTree(e) {\n // Prevent multiple k-d-trees from being built simultaneously\n // (#6235)\n this.buildingKdTree = true;\n const series = this, dimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Internal function\n * @private\n */\n function _kdtree(points, depth, dimensions) {\n const length = points && points.length;\n let axis, median;\n if (length) {\n // alternate between the axis\n axis = series.kdAxisArray[depth % dimensions];\n // sort point array\n points.sort(function (a, b) {\n return a[axis] - b[axis];\n });\n median = Math.floor(length / 2);\n // build and return nod\n return {\n point: points[median],\n left: _kdtree(points.slice(0, median), depth + 1, dimensions),\n right: _kdtree(points.slice(median + 1), depth + 1, dimensions)\n };\n }\n }\n /**\n * Start the recursive build process with a clone of the points\n * array and null points filtered out. (#3873)\n * @private\n */\n function startRecursive() {\n series.kdTree = _kdtree(series.getValidPoints(null, \n // For line-type series restrict to plot area, but\n // column-type series not (#3916, #4511)\n !series.directTouch), dimensions, dimensions);\n series.buildingKdTree = false;\n }\n delete series.kdTree;\n // For testing tooltips, don't build async. Also if touchstart, we\n // may be dealing with click events on mobile, so don't delay\n // (#6817).\n syncTimeout(startRecursive, series.options.kdNow || (e && e.type === 'touchstart') ? 0 : 1);\n }\n /**\n * @private\n * @function Highcharts.Series#searchKDTree\n */\n searchKDTree(point, compareX, e) {\n const series = this, kdX = this.kdAxisArray[0], kdY = this.kdAxisArray[1], kdComparer = compareX ? 'distX' : 'dist', kdDimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Set the one and two dimensional distance on the point object.\n * @private\n */\n function setDistance(p1, p2) {\n const x = (defined(p1[kdX]) &&\n defined(p2[kdX])) ?\n Math.pow(p1[kdX] - p2[kdX], 2) :\n null, y = (defined(p1[kdY]) &&\n defined(p2[kdY])) ?\n Math.pow(p1[kdY] - p2[kdY], 2) :\n null, r = (x || 0) + (y || 0);\n p2.dist = defined(r) ? Math.sqrt(r) : Number.MAX_VALUE;\n p2.distX = defined(x) ? Math.sqrt(x) : Number.MAX_VALUE;\n }\n /**\n * @private\n */\n function _search(search, tree, depth, dimensions) {\n const point = tree.point, axis = series.kdAxisArray[depth % dimensions];\n let nPoint1, nPoint2, ret = point;\n setDistance(search, point);\n // Pick side based on distance to splitting point\n const tdist = search[axis] - point[axis], sideA = tdist < 0 ? 'left' : 'right', sideB = tdist < 0 ? 'right' : 'left';\n // End of tree\n if (tree[sideA]) {\n nPoint1 = _search(search, tree[sideA], depth + 1, dimensions);\n ret = (nPoint1[kdComparer] <\n ret[kdComparer] ?\n nPoint1 :\n point);\n }\n if (tree[sideB]) {\n // compare distance to current best to splitting point to\n // decide whether to check side B or not\n if (Math.sqrt(tdist * tdist) < ret[kdComparer]) {\n nPoint2 = _search(search, tree[sideB], depth + 1, dimensions);\n ret = (nPoint2[kdComparer] <\n ret[kdComparer] ?\n nPoint2 :\n ret);\n }\n }\n return ret;\n }\n if (!this.kdTree && !this.buildingKdTree) {\n this.buildKDTree(e);\n }\n if (this.kdTree) {\n return _search(point, this.kdTree, kdDimensions, kdDimensions);\n }\n }\n /**\n * @private\n * @function Highcharts.Series#pointPlacementToXValue\n */\n pointPlacementToXValue() {\n const { options: { pointPlacement, pointRange }, xAxis: axis } = this;\n let factor = pointPlacement;\n // Point placement is relative to each series pointRange (#5889)\n if (factor === 'between') {\n factor = axis.reversed ? -0.5 : 0.5; // #11955\n }\n return isNumber(factor) ?\n factor * (pointRange || axis.pointRange) :\n 0;\n }\n /**\n * @private\n * @function Highcharts.Series#isPointInside\n */\n isPointInside(point) {\n const { chart, xAxis, yAxis } = this, isInside = (typeof point.plotY !== 'undefined' &&\n typeof point.plotX !== 'undefined' &&\n point.plotY >= 0 &&\n point.plotY <= (yAxis ? yAxis.len : chart.plotHeight) &&\n point.plotX >= 0 &&\n point.plotX <= (xAxis ? xAxis.len : chart.plotWidth));\n return isInside;\n }\n /**\n * Draw the tracker object that sits above all data labels and markers to\n * track mouse events on the graph or points. For the line type charts\n * the tracker uses the same graphPath, but with a greater stroke width\n * for better control.\n * @private\n */\n drawTracker() {\n const series = this, options = series.options, trackByArea = options.trackByArea, trackerPath = [].concat(trackByArea ?\n series.areaPath :\n series.graphPath), \n // trackerPathLength = trackerPath.length,\n chart = series.chart, pointer = chart.pointer, renderer = chart.renderer, snap = chart.options.tooltip.snap, tracker = series.tracker, onMouseOver = function (e) {\n if (chart.hoverSeries !== series) {\n series.onMouseOver();\n }\n }, \n /*\n * Empirical lowest possible opacities for TRACKER_FILL for an\n * element to stay invisible but clickable\n * IE9: 0.00000000001 (unlimited)\n * IE10: 0.0001 (exporting only)\n * FF: 0.00000000001 (unlimited)\n * Chrome: 0.000001\n * Safari: 0.000001\n * Opera: 0.00000000001 (unlimited)\n */\n TRACKER_FILL = 'rgba(192,192,192,' + (svg ? 0.0001 : 0.002) + ')';\n let i;\n // Draw the tracker\n if (tracker) {\n tracker.attr({ d: trackerPath });\n }\n else if (series.graph) { // create\n series.tracker = renderer.path(trackerPath)\n .attr({\n visibility: series.visible ? 'inherit' : 'hidden',\n zIndex: 2\n })\n .addClass(trackByArea ?\n 'highcharts-tracker-area' :\n 'highcharts-tracker-line')\n .add(series.group);\n if (!chart.styledMode) {\n series.tracker.attr({\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n stroke: TRACKER_FILL,\n fill: trackByArea ? TRACKER_FILL : 'none',\n 'stroke-width': series.graph.strokeWidth() +\n (trackByArea ? 0 : 2 * snap)\n });\n }\n // The tracker is added to the series group, which is clipped, but\n // is covered by the marker group. So the marker group also needs to\n // capture events.\n [\n series.tracker,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (tracker) {\n if (tracker) {\n tracker.addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (options.cursor && !chart.styledMode) {\n tracker.css({ cursor: options.cursor });\n }\n if (hasTouch) {\n tracker.on('touchstart', onMouseOver);\n }\n }\n });\n }\n fireEvent(this, 'afterDrawTracker');\n }\n /**\n * Add a point to the series after render time. The point can be added at\n * the end, or by giving it an X value, to the start or in the middle of the\n * series.\n *\n * @sample highcharts/members/series-addpoint-append/\n * Append point\n * @sample highcharts/members/series-addpoint-append-and-shift/\n * Append and shift\n * @sample highcharts/members/series-addpoint-x-and-y/\n * Both X and Y values given\n * @sample highcharts/members/series-addpoint-pie/\n * Append pie slice\n * @sample stock/members/series-addpoint/\n * Append 100 points in Highcharts Stock\n * @sample stock/members/series-addpoint-shift/\n * Append and shift in Highcharts Stock\n * @sample maps/members/series-addpoint/\n * Add a point in Highmaps\n *\n * @function Highcharts.Series#addPoint\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. If options is a single number, a point with\n * that y value is appended to the series. If it is an array, it will\n * be interpreted as x and y values respectively. If it is an\n * object, advanced options as outlined under `series.data` are\n * applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When adding\n * more than one point, it is highly recommended that the redraw\n * option be set to false, and instead {@link Chart#redraw} is\n * explicitly called after the adding of points is finished.\n * Otherwise, the chart will redraw after adding each point.\n *\n * @param {boolean} [shift=false]\n * If true, a point is shifted off the start of the series as one is\n * appended to the end.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `addPoint` event.\n *\n * @emits Highcharts.Series#event:addPoint\n */\n addPoint(options, redraw, shift, animation, withEvent) {\n const series = this, seriesOptions = series.options, data = series.data, chart = series.chart, xAxis = series.xAxis, names = xAxis && xAxis.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.xData;\n let isInTheMiddle, i;\n // Optional redraw, defaults to true\n redraw = pick(redraw, true);\n // Get options and push the point to xData, yData and series.options. In\n // series.generatePoints the Point instance will be created on demand\n // and pushed to the series.data array.\n const point = { series: series };\n series.pointClass.prototype.applyOptions.apply(point, [options]);\n const x = point.x;\n // Get the insertion point\n i = xData.length;\n if (series.requireSorting && x < xData[i - 1]) {\n isInTheMiddle = true;\n while (i && xData[i - 1] > x) {\n i--;\n }\n }\n // Insert undefined item\n series.updateParallelArrays(point, 'splice', [i, 0, 0]);\n // Update it\n series.updateParallelArrays(point, i);\n if (names && point.name) {\n names[x] = point.name;\n }\n dataOptions.splice(i, 0, options);\n if (isInTheMiddle ||\n // When processedData is present we need to splice an empty slot\n // into series.data, otherwise generatePoints won't pick it up.\n series.processedData) {\n series.data.splice(i, 0, null);\n series.processData();\n }\n // Generate points to be added to the legend (#1329)\n if (seriesOptions.legendType === 'point') {\n series.generatePoints();\n }\n // Shift the first point off the parallel arrays\n if (shift) {\n if (data[0] && (data[0].remove)) {\n data[0].remove(false);\n }\n else {\n data.shift();\n series.updateParallelArrays(point, 'shift');\n dataOptions.shift();\n }\n }\n // Fire event\n if (withEvent !== false) {\n fireEvent(series, 'addPoint', { point: point });\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw(animation); // Animation is set anyway on redraw, #5665\n }\n }\n /**\n * Remove a point from the series. Unlike the\n * {@link Highcharts.Point#remove} method, this can also be done on a point\n * that is not instanciated because it is outside the view or subject to\n * Highcharts Stock data grouping.\n *\n * @sample highcharts/members/series-removepoint/\n * Remove cropped point\n *\n * @function Highcharts.Series#removePoint\n *\n * @param {number} i\n * The index of the point in the {@link Highcharts.Series.data|data}\n * array.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When\n * removing more than one point, it is highly recommended that the\n * `redraw` option be set to `false`, and instead {@link\n * Highcharts.Chart#redraw} is explicitly called after the adding of\n * points is finished.\n *\n * @param {boolean|Partial} [animation]\n * Whether and optionally how the series should be animated.\n *\n * @emits Highcharts.Point#event:remove\n */\n removePoint(i, redraw, animation) {\n const series = this, data = series.data, point = data[i], points = series.points, chart = series.chart, remove = function () {\n if (points && points.length === data.length) { // #4935\n points.splice(i, 1);\n }\n data.splice(i, 1);\n series.options.data.splice(i, 1);\n series.updateParallelArrays(point || { series: series }, 'splice', [i, 1]);\n if (point) {\n point.destroy();\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw();\n }\n };\n setAnimation(animation, chart);\n redraw = pick(redraw, true);\n // Fire the event with a default handler of removing the point\n if (point) {\n point.firePointEvent('remove', null, remove);\n }\n else {\n remove();\n }\n }\n /**\n * Remove a series and optionally redraw the chart.\n *\n * @sample highcharts/members/series-remove/\n * Remove first series from a button\n *\n * @function Highcharts.Series#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}.\n *\n * @param {boolean|Partial} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `remove` event.\n *\n * @emits Highcharts.Series#event:remove\n */\n remove(redraw, animation, withEvent, keepEvents) {\n const series = this, chart = series.chart;\n /**\n * @private\n */\n function remove() {\n // Destroy elements\n series.destroy(keepEvents);\n // Redraw\n chart.isDirtyLegend = chart.isDirtyBox = true;\n chart.linkSeries(keepEvents);\n if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of removing the point\n if (withEvent !== false) {\n fireEvent(series, 'remove', null, remove);\n }\n else {\n remove();\n }\n }\n /**\n * Update the series with a new set of options. For a clean and precise\n * handling of new options, all methods and elements from the series are\n * removed, and it is initialized from scratch. Therefore, this method is\n * more performance expensive than some other utility methods like {@link\n * Series#setData} or {@link Series#setVisible}.\n *\n * Note that `Series.update` may mutate the passed `data` options.\n *\n * @sample highcharts/members/series-update/\n * Updating series options\n * @sample maps/members/series-update/\n * Update series options in Highmaps\n *\n * @function Highcharts.Series#update\n *\n * @param {Highcharts.SeriesOptionsType} options\n * New options that will be merged with the series' existing options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to\n * false and call {@link Chart#redraw} after.\n *\n * @emits Highcharts.Series#event:update\n * @emits Highcharts.Series#event:afterUpdate\n */\n update(options, redraw) {\n options = cleanRecursively(options, this.userOptions);\n fireEvent(this, 'update', { options: options });\n const series = this, chart = series.chart, \n // must use user options when changing type because series.options\n // is merged in with type specific plotOptions\n oldOptions = series.userOptions, initialType = series.initialType || series.type, plotOptions = chart.options.plotOptions, initialSeriesProto = seriesTypes[initialType].prototype, groups = [\n 'group',\n 'markerGroup',\n 'dataLabelsGroup',\n 'transformGroup'\n ], \n // Animation must be enabled when calling update before the initial\n // animation has first run. This happens when calling update\n // directly after chart initialization, or when applying responsive\n // rules (#6912).\n animation = series.finishedAnimating && { animation: false }, kinds = {};\n let seriesOptions, n, preserve = [\n 'eventOptions',\n 'navigatorSeries',\n 'baseSeries'\n ], newType = (options.type ||\n oldOptions.type ||\n chart.options.chart.type);\n const keepPoints = !(\n // Indicators, histograms etc recalculate the data. It should be\n // possible to omit this.\n this.hasDerivedData ||\n // New type requires new point classes\n (newType && newType !== this.type) ||\n // New options affecting how the data points are built\n typeof options.pointStart !== 'undefined' ||\n typeof options.pointInterval !== 'undefined' ||\n typeof options.relativeXValue !== 'undefined' ||\n options.joinBy ||\n options.mapData || // #11636\n // Changes to data grouping requires new points in new group\n series.hasOptionChanged('dataGrouping') ||\n series.hasOptionChanged('pointStart') ||\n series.hasOptionChanged('pointInterval') ||\n series.hasOptionChanged('pointIntervalUnit') ||\n series.hasOptionChanged('keys'));\n newType = newType || initialType;\n if (keepPoints) {\n preserve.push('data', 'isDirtyData', 'points', 'processedData', // #17057\n 'processedXData', 'processedYData', 'xIncrement', 'cropped', '_hasPointMarkers', '_hasPointLabels', 'clips', // #15420\n // Networkgraph (#14397)\n 'nodes', 'layout', \n // Treemap\n 'level', \n // Map specific, consider moving it to series-specific preserve-\n // properties (#10617)\n 'mapMap', 'mapData', 'minY', 'maxY', 'minX', 'maxX');\n if (options.visible !== false) {\n preserve.push('area', 'graph');\n }\n series.parallelArrays.forEach(function (key) {\n preserve.push(key + 'Data');\n });\n if (options.data) {\n // setData uses dataSorting options so we need to update them\n // earlier\n if (options.dataSorting) {\n extend(series.options.dataSorting, options.dataSorting);\n }\n this.setData(options.data, false);\n }\n }\n // Do the merge, with some forced options\n options = merge(oldOptions, animation, {\n // When oldOptions.index is null it should't be cleared.\n // Otherwise navigator series will have wrong indexes (#10193).\n index: typeof oldOptions.index === 'undefined' ?\n series.index : oldOptions.index,\n pointStart: pick(\n // when updating from blank (#7933)\n (plotOptions &&\n plotOptions.series &&\n plotOptions.series.pointStart), oldOptions.pointStart, \n // when updating after addPoint\n series.xData[0])\n }, (!keepPoints && { data: series.options.data }), options);\n // Merge does not merge arrays, but replaces them. Since points were\n // updated, `series.options.data` has correct merged options, use it:\n if (keepPoints && options.data) {\n options.data = series.options.data;\n }\n // Make sure preserved properties are not destroyed (#3094)\n preserve = groups.concat(preserve);\n preserve.forEach(function (prop) {\n preserve[prop] = series[prop];\n delete series[prop];\n });\n let casting = false;\n if (seriesTypes[newType]) {\n casting = newType !== series.type;\n // Destroy the series and delete all properties, it will be\n // reinserted within the `init` call below\n series.remove(false, false, false, true);\n if (casting) {\n // Modern browsers including IE11\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(series, seriesTypes[newType].prototype);\n // Legacy (IE < 11)\n }\n else {\n const ownEvents = Object.hasOwnProperty.call(series, 'hcEvents') && series.hcEvents;\n for (n in initialSeriesProto) { // eslint-disable-line guard-for-in\n series[n] = void 0;\n }\n // Reinsert all methods and properties from the new type\n // prototype (#2270, #3719).\n extend(series, seriesTypes[newType].prototype);\n // The events are tied to the prototype chain, don't copy if\n // they're not the series' own\n if (ownEvents) {\n series.hcEvents = ownEvents;\n }\n else {\n delete series.hcEvents;\n }\n }\n }\n }\n else {\n error(17, true, chart, { missingModuleFor: newType });\n }\n // Re-register groups (#3094) and other preserved properties\n preserve.forEach(function (prop) {\n series[prop] = preserve[prop];\n });\n series.init(chart, options);\n // Remove particular elements of the points. Check `series.options`\n // because we need to consider the options being set on plotOptions as\n // well.\n if (keepPoints && this.points) {\n seriesOptions = series.options;\n // What kind of elements to destroy\n if (seriesOptions.visible === false) {\n kinds.graphic = 1;\n kinds.dataLabel = 1;\n }\n else if (!series._hasPointLabels) {\n const { marker, dataLabels } = seriesOptions, oldMarker = oldOptions.marker || {};\n // If the marker got disabled or changed its symbol, width or\n // height - destroy\n if (marker && (marker.enabled === false ||\n oldMarker.symbol !== marker.symbol || // #10870, #15946\n oldMarker.height !== marker.height || // #16274\n oldMarker.width !== marker.width // #16274\n )) {\n kinds.graphic = 1;\n }\n if (dataLabels &&\n dataLabels.enabled === false) {\n kinds.dataLabel = 1;\n }\n }\n for (const point of this.points) {\n if (point && point.series) {\n point.resolveColor();\n // Destroy elements in order to recreate based on updated\n // series options.\n if (Object.keys(kinds).length) {\n point.destroyElements(kinds);\n }\n if (seriesOptions.showInLegend === false &&\n point.legendItem) {\n chart.legend.destroyItem(point);\n }\n }\n }\n }\n series.initialType = initialType;\n chart.linkSeries(); // Links are lost in series.remove (#3028)\n // #15383: Fire updatedData if the type has changed to keep linked\n // series such as indicators updated\n if (casting && series.linkedSeries.length) {\n series.isDirtyData = true;\n }\n fireEvent(this, 'afterUpdate');\n if (pick(redraw, true)) {\n chart.redraw(keepPoints ? void 0 : false);\n }\n }\n /**\n * Used from within series.update\n * @private\n */\n setName(name) {\n this.name = this.options.name = this.userOptions.name = name;\n this.chart.isDirtyLegend = true;\n }\n /**\n * Check if the option has changed.\n * @private\n */\n hasOptionChanged(optionName) {\n const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName];\n if (oldOption) {\n return option !== oldOption;\n }\n return option !==\n pick(plotOptions &&\n plotOptions[this.type] &&\n plotOptions[this.type][optionName], plotOptions &&\n plotOptions.series &&\n plotOptions.series[optionName], option);\n }\n /**\n * Runs on mouse over the series graphical items.\n *\n * @function Highcharts.Series#onMouseOver\n * @emits Highcharts.Series#event:mouseOver\n */\n onMouseOver() {\n const series = this, chart = series.chart, hoverSeries = chart.hoverSeries, pointer = chart.pointer;\n pointer.setHoverChartIndex();\n // set normal state to previous series\n if (hoverSeries && hoverSeries !== series) {\n hoverSeries.onMouseOut();\n }\n // trigger the event, but to save processing time,\n // only if defined\n if (series.options.events.mouseOver) {\n fireEvent(series, 'mouseOver');\n }\n // hover this\n series.setState('hover');\n /**\n * Contains the original hovered series.\n *\n * @name Highcharts.Chart#hoverSeries\n * @type {Highcharts.Series|null}\n */\n chart.hoverSeries = series;\n }\n /**\n * Runs on mouse out of the series graphical items.\n *\n * @function Highcharts.Series#onMouseOut\n *\n * @emits Highcharts.Series#event:mouseOut\n */\n onMouseOut() {\n // trigger the event only if listeners exist\n const series = this, options = series.options, chart = series.chart, tooltip = chart.tooltip, hoverPoint = chart.hoverPoint;\n // #182, set to null before the mouseOut event fires\n chart.hoverSeries = null;\n // trigger mouse out on the point, which must be in this series\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n // fire the mouse out event\n if (series && options.events.mouseOut) {\n fireEvent(series, 'mouseOut');\n }\n // hide the tooltip\n if (tooltip &&\n !series.stickyTracking &&\n (!tooltip.shared || series.noSharedTooltip)) {\n tooltip.hide();\n }\n // Reset all inactive states\n chart.series.forEach(function (s) {\n s.setState('', true);\n });\n }\n /**\n * Set the state of the series. Called internally on mouse interaction\n * operations, but it can also be called directly to visually\n * highlight a series.\n *\n * @function Highcharts.Series#setState\n *\n * @param {Highcharts.SeriesStateValue|\"\"} [state]\n * The new state, can be either `'hover'`, `'inactive'`, `'select'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [inherit]\n * Determines if state should be inherited by points too.\n */\n setState(state, inherit) {\n const series = this, options = series.options, graph = series.graph, inactiveOtherPoints = options.inactiveOtherPoints, stateOptions = options.states, \n // By default a quick animation to hover/inactive,\n // slower to un-hover\n stateAnimation = pick((stateOptions[state || 'normal'] &&\n stateOptions[state || 'normal'].animation), series.chart.options.chart.animation);\n let attribs, lineWidth = options.lineWidth, i = 0, opacity = options.opacity;\n state = state || '';\n if (series.state !== state) {\n // Toggle class names\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (group) {\n if (group) {\n // Old state\n if (series.state) {\n group.removeClass('highcharts-series-' + series.state);\n }\n // New state\n if (state) {\n group.addClass('highcharts-series-' + state);\n }\n }\n });\n series.state = state;\n if (!series.chart.styledMode) {\n if (stateOptions[state] &&\n stateOptions[state].enabled === false) {\n return;\n }\n if (state) {\n lineWidth = (stateOptions[state].lineWidth ||\n lineWidth + (stateOptions[state].lineWidthPlus || 0)); // #4035\n opacity = pick(stateOptions[state].opacity, opacity);\n }\n if (graph && !graph.dashstyle && isNumber(lineWidth)) {\n attribs = {\n 'stroke-width': lineWidth\n };\n // Animate the graph stroke-width.\n graph.animate(attribs, stateAnimation);\n while (series['zone-graph-' + i]) {\n series['zone-graph-' + i].animate(attribs, stateAnimation);\n i = i + 1;\n }\n }\n // For some types (pie, networkgraph, sankey) opacity is\n // resolved on a point level\n if (!inactiveOtherPoints) {\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup,\n series.labelBySeries\n ].forEach(function (group) {\n if (group) {\n group.animate({\n opacity: opacity\n }, stateAnimation);\n }\n });\n }\n }\n }\n // Don't loop over points on a series that doesn't apply inactive state\n // to siblings markers (e.g. line, column)\n if (inherit && inactiveOtherPoints && series.points) {\n series.setAllPointsToState(state || void 0);\n }\n }\n /**\n * Set the state for all points in the series.\n *\n * @function Highcharts.Series#setAllPointsToState\n *\n * @private\n *\n * @param {string} [state]\n * Can be either `hover` or undefined to set to normal state.\n */\n setAllPointsToState(state) {\n this.points.forEach(function (point) {\n if (point.setState) {\n point.setState(state);\n }\n });\n }\n /**\n * Show or hide the series.\n *\n * @function Highcharts.Series#setVisible\n *\n * @param {boolean} [visible]\n * True to show the series, false to hide. If undefined, the visibility is\n * toggled.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw|chart.redraw()} after.\n *\n * @emits Highcharts.Series#event:hide\n * @emits Highcharts.Series#event:show\n */\n setVisible(vis, redraw) {\n const series = this, chart = series.chart, ignoreHiddenSeries = chart.options.chart.ignoreHiddenSeries, oldVisibility = series.visible;\n // if called without an argument, toggle visibility\n series.visible =\n vis =\n series.options.visible =\n series.userOptions.visible =\n typeof vis === 'undefined' ? !oldVisibility : vis; // #5618\n const showOrHide = vis ? 'show' : 'hide';\n // show or hide elements\n [\n 'group',\n 'dataLabelsGroup',\n 'markerGroup',\n 'tracker',\n 'tt'\n ].forEach(function (key) {\n if (series[key]) {\n series[key][showOrHide]();\n }\n });\n // hide tooltip (#1361)\n if (chart.hoverSeries === series ||\n (chart.hoverPoint && chart.hoverPoint.series) === series) {\n series.onMouseOut();\n }\n if (series.legendItem) {\n chart.legend.colorizeItem(series, vis);\n }\n // rescale or adapt to resized chart\n series.isDirty = true;\n // in a stack, all other series are affected\n if (series.options.stacking) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.options.stacking && otherSeries.visible) {\n otherSeries.isDirty = true;\n }\n });\n }\n // show or hide linked series\n series.linkedSeries.forEach(function (otherSeries) {\n otherSeries.setVisible(vis, false);\n });\n if (ignoreHiddenSeries) {\n chart.isDirtyBox = true;\n }\n fireEvent(series, showOrHide);\n if (redraw !== false) {\n chart.redraw();\n }\n }\n /**\n * Show the series if hidden.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#show\n * @emits Highcharts.Series#event:show\n */\n show() {\n this.setVisible(true);\n }\n /**\n * Hide the series if visible. If the\n * [chart.ignoreHiddenSeries](https://api.highcharts.com/highcharts/chart.ignoreHiddenSeries)\n * option is true, the chart is redrawn without this series.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#hide\n * @emits Highcharts.Series#event:hide\n */\n hide() {\n this.setVisible(false);\n }\n /**\n * Select or unselect the series. This means its\n * {@link Highcharts.Series.selected|selected}\n * property is set, the checkbox in the legend is toggled and when selected,\n * the series is returned by the {@link Highcharts.Chart#getSelectedSeries}\n * function.\n *\n * @sample highcharts/members/series-select/\n * Select a series from a button\n *\n * @function Highcharts.Series#select\n *\n * @param {boolean} [selected]\n * True to select the series, false to unselect. If undefined, the selection\n * state is toggled.\n *\n * @emits Highcharts.Series#event:select\n * @emits Highcharts.Series#event:unselect\n */\n select(selected) {\n const series = this;\n series.selected =\n selected =\n this.options.selected = (typeof selected === 'undefined' ?\n !series.selected :\n selected);\n if (series.checkbox) {\n series.checkbox.checked = selected;\n }\n fireEvent(series, selected ? 'select' : 'unselect');\n }\n /**\n * Checks if a tooltip should be shown for a given point.\n *\n * @private\n */\n shouldShowTooltip(plotX, plotY, options = {}) {\n options.series = this;\n options.visiblePlotOnly = true;\n return this.chart.isInsidePlot(plotX, plotY, options);\n }\n /**\n * Draws the legend symbol based on the legendSymbol user option.\n *\n * @private\n */\n drawLegendSymbol(legend, item) {\n var _a;\n (_a = LegendSymbol[this.options.legendSymbol || 'rectangle']) === null || _a === void 0 ? void 0 : _a.call(this, legend, item);\n }\n }\n Series.defaultOptions = SeriesDefaults;\n /**\n * Registry of all available series types.\n *\n * @name Highcharts.Series.types\n * @type {Highcharts.Dictionary}\n */\n Series.types = SeriesRegistry.seriesTypes;\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Registers a series class to be accessible via `Series.types`.\n *\n * @function Highcharts.Series.registerType\n *\n * @param {string} seriesType\n * The series type as an identifier string in lower case.\n *\n * @param {Function} SeriesClass\n * The series class as a class pattern or a constructor function with\n * prototype.\n */\n Series.registerType = SeriesRegistry.registerSeriesType;\n extend(Series.prototype, {\n axisTypes: ['xAxis', 'yAxis'],\n coll: 'series',\n colorCounter: 0,\n cropShoulder: 1,\n directTouch: false,\n isCartesian: true,\n kdAxisArray: ['clientX', 'plotY'],\n // each point's x and y values are stored in this.xData and this.yData:\n parallelArrays: ['x', 'y'],\n pointClass: Point,\n requireSorting: true,\n // requires the data to be sorted:\n sorted: true\n });\n /* *\n *\n * Registry\n *\n * */\n SeriesRegistry.series = Series;\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * This is a placeholder type of the possible series options for\n * [Highcharts](../highcharts/series), [Highcharts Stock](../highstock/series),\n * [Highmaps](../highmaps/series), and [Gantt](../gantt/series).\n *\n * In TypeScript is this dynamically generated to reference all possible types\n * of series options.\n *\n * @ignore-declaration\n * @typedef {Highcharts.SeriesOptions|Highcharts.Dictionary<*>} Highcharts.SeriesOptionsType\n */\n /**\n * Options for `dataSorting`.\n *\n * @interface Highcharts.DataSortingOptionsObject\n * @since 8.0.0\n */ /**\n * Enable or disable data sorting for the series.\n * @name Highcharts.DataSortingOptionsObject#enabled\n * @type {boolean|undefined}\n */ /**\n * Whether to allow matching points by name in an update.\n * @name Highcharts.DataSortingOptionsObject#matchByName\n * @type {boolean|undefined}\n */ /**\n * Determines what data value should be used to sort by.\n * @name Highcharts.DataSortingOptionsObject#sortKey\n * @type {string|undefined}\n */\n /**\n * Function callback when a series has been animated.\n *\n * @callback Highcharts.SeriesAfterAnimateCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesAfterAnimateEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding completed animation of a series.\n *\n * @interface Highcharts.SeriesAfterAnimateEventObject\n */ /**\n * Animated series.\n * @name Highcharts.SeriesAfterAnimateEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesAfterAnimateEventObject#type\n * @type {\"afterAnimate\"}\n */\n /**\n * Function callback when the checkbox next to the series' name in the legend is\n * clicked.\n *\n * @callback Highcharts.SeriesCheckboxClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesCheckboxClickEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding check of a series box.\n *\n * @interface Highcharts.SeriesCheckboxClickEventObject\n */ /**\n * Whether the box has been checked.\n * @name Highcharts.SeriesCheckboxClickEventObject#checked\n * @type {boolean}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#item\n * @type {Highcharts.Series}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Function callback when a series is clicked. Return false to cancel toogle\n * actions.\n *\n * @callback Highcharts.SeriesClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series.\n *\n * @interface Highcharts.SeriesClickEventObject\n * @extends global.Event\n */ /**\n * Nearest point on the graph.\n * @name Highcharts.SeriesClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Gets fired when the series is hidden after chart generation time, either by\n * clicking the legend item or by calling `.hide()`.\n *\n * @callback Highcharts.SeriesHideCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin` of a line\n * graph.\n *\n * @typedef {\"butt\"|\"round\"|\"square\"|string} Highcharts.SeriesLinecapValue\n */\n /**\n * Gets fired when the legend item belonging to the series is clicked. The\n * default action is to toggle the visibility of the series. This can be\n * prevented by returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {global.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Gets fired when the mouse leaves the graph.\n *\n * @callback Highcharts.SeriesMouseOutCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the graph.\n *\n * @callback Highcharts.SeriesMouseOverCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Translation and scale for the plot area of a series.\n *\n * @interface Highcharts.SeriesPlotBoxObject\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateY\n * @type {number}\n */\n /**\n * Gets fired when the series is shown after chart generation time, either by\n * clicking the legend item or by calling `.show()`.\n *\n * @callback Highcharts.SeriesShowCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the series state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.SeriesStateValue\n */\n ''; // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * Series options for specific data and the data itself. In TypeScript you\n * have to cast the series options to specific series types, to get all\n * possible options for a series.\n *\n * @example\n * // TypeScript example\n * Highcharts.chart('container', {\n * series: [{\n * color: '#06C',\n * data: [[0, 1], [2, 3]]\n * } as Highcharts.SeriesLineOptions ]\n * });\n *\n * @type {Array<*>}\n * @apioption series\n */\n /**\n * An id for the series. This can be used after render time to get a pointer\n * to the series object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @type {string}\n * @since 1.2.0\n * @apioption series.id\n */\n /**\n * The index of the series in the chart, affecting the internal index in the\n * `chart.series` array, the visible Z index as well as the order in the\n * legend.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption series.index\n */\n /**\n * The sequential index of the series in the legend.\n *\n * @see [legend.reversed](#legend.reversed),\n * [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts|highstock} highcharts/series/legendindex/\n * Legend in opposite order\n *\n * @type {number}\n * @apioption series.legendIndex\n */\n /**\n * The name of the series as shown in the legend, tooltip etc.\n *\n * @sample {highcharts} highcharts/series/name/\n * Series name\n * @sample {highmaps} maps/demo/category-map/\n * Series name\n *\n * @type {string}\n * @apioption series.name\n */\n /**\n * This option allows grouping series in a stacked chart. The stack option\n * can be a string or anything else, as long as the grouped series' stack\n * options match each other after conversion into a string.\n *\n * @sample {highcharts} highcharts/series/stack/\n * Stacked and grouped columns\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highstock\n * @apioption series.stack\n */\n /**\n * The type of series, for example `line` or `column`. By default, the\n * series type is inherited from [chart.type](#chart.type), so unless the\n * chart is a combination of series types, there is no need to set it on the\n * series level.\n *\n * @sample {highcharts} highcharts/series/type/\n * Line and column in the same chart\n * @sample highcharts/series/type-dynamic/\n * Dynamic types with button selector\n * @sample {highmaps} maps/demo/mapline-mappoint/\n * Multiple types in the same map\n *\n * @type {string}\n * @apioption series.type\n */\n /**\n * When using dual or multiple x axes, this number defines which xAxis the\n * particular series is connected to. It refers to either the\n * {@link #xAxis.id|axis id}\n * or the index of the axis in the xAxis array, with 0 being the first.\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.xAxis\n */\n /**\n * When using dual or multiple y axes, this number defines which yAxis the\n * particular series is connected to. It refers to either the\n * {@link #yAxis.id|axis id}\n * or the index of the axis in the yAxis array, with 0 being the first.\n *\n * @sample {highcharts} highcharts/series/yaxis/\n * Apply the column series to the secondary Y axis\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.yAxis\n */\n /**\n * Define the visual z index of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highcharts} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n * @sample {highstock} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highstock} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.zIndex\n */\n ''; // include precedent doclets in transpilat\n\n return Series;\n });\n _registerModule(_modules, 'Extensions/ScrollablePlotArea.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (A, Axis, Chart, Series, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Highcharts feature to make the Y axis stay fixed when scrolling the chart\n * horizontally on mobile devices. Supports left and right side axes.\n */\n /*\n WIP on vertical scrollable plot area (#9378). To do:\n - Bottom axis positioning\n - Test with Gantt\n - Look for size optimizing the code\n - API and demos\n */\n const { stop } = A;\n const { addEvent, createElement, defined, merge, pick } = U;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n addEvent(Chart, 'afterSetChartSize', function (e) {\n let scrollablePlotArea = this.options.chart.scrollablePlotArea, scrollableMinWidth = scrollablePlotArea && scrollablePlotArea.minWidth, scrollableMinHeight = scrollablePlotArea && scrollablePlotArea.minHeight, scrollablePixelsX, scrollablePixelsY, corrections;\n if (!this.renderer.forExport) {\n // The amount of pixels to scroll, the difference between chart\n // width and scrollable width\n if (scrollableMinWidth) {\n this.scrollablePixelsX = scrollablePixelsX = Math.max(0, scrollableMinWidth - this.chartWidth);\n if (scrollablePixelsX) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.width = this.plotWidth += scrollablePixelsX;\n if (this.inverted) {\n this.clipBox.height += scrollablePixelsX;\n }\n else {\n this.clipBox.width += scrollablePixelsX;\n }\n corrections = {\n // Corrections for right side\n 1: { name: 'right', value: scrollablePixelsX }\n };\n }\n // Currently we can only do either X or Y\n }\n else if (scrollableMinHeight) {\n this.scrollablePixelsY = scrollablePixelsY = Math.max(0, scrollableMinHeight - this.chartHeight);\n if (defined(scrollablePixelsY)) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.height = this.plotHeight += scrollablePixelsY;\n if (this.inverted) {\n this.clipBox.width += scrollablePixelsY;\n }\n else {\n this.clipBox.height += scrollablePixelsY;\n }\n corrections = {\n 2: { name: 'bottom', value: scrollablePixelsY }\n };\n }\n }\n if (corrections && !e.skipAxes) {\n this.axes.forEach(function (axis) {\n // For right and bottom axes, only fix the plot line length\n if (corrections[axis.side]) {\n // Get the plot lines right in getPlotLinePath,\n // temporarily set it to the adjusted plot width.\n axis.getPlotLinePath = function () {\n let marginName = corrections[axis.side].name, correctionValue = corrections[axis.side].value, \n // axis.right or axis.bottom\n margin = this[marginName], path;\n // Temporarily adjust\n this[marginName] = margin - correctionValue;\n path = Axis.prototype.getPlotLinePath.apply(this, arguments);\n // Reset\n this[marginName] = margin;\n return path;\n };\n }\n else {\n // Apply the corrected plotWidth\n axis.setAxisSize();\n axis.setAxisTranslation();\n }\n });\n }\n }\n });\n addEvent(Chart, 'render', function () {\n if (this.scrollablePixelsX || this.scrollablePixelsY) {\n if (this.setUpScrolling) {\n this.setUpScrolling();\n }\n this.applyFixed();\n }\n else if (this.fixedDiv) { // Has been in scrollable mode\n this.applyFixed();\n }\n });\n /**\n * @private\n * @function Highcharts.Chart#setUpScrolling\n * @return {void}\n */\n Chart.prototype.setUpScrolling = function () {\n const css = {\n WebkitOverflowScrolling: 'touch',\n overflowX: 'hidden',\n overflowY: 'hidden'\n };\n if (this.scrollablePixelsX) {\n css.overflowX = 'auto';\n }\n if (this.scrollablePixelsY) {\n css.overflowY = 'auto';\n }\n // Insert a container with position relative\n // that scrolling and fixed container renders to (#10555)\n this.scrollingParent = createElement('div', {\n className: 'highcharts-scrolling-parent'\n }, {\n position: 'relative'\n }, this.renderTo);\n // Add the necessary divs to provide scrolling\n this.scrollingContainer = createElement('div', {\n 'className': 'highcharts-scrolling'\n }, css, this.scrollingParent);\n // On scroll, reset the chart position because it applies to the scrolled\n // container\n let lastHoverPoint;\n addEvent(this.scrollingContainer, 'scroll', () => {\n if (this.pointer) {\n delete this.pointer.chartPosition;\n if (this.hoverPoint) {\n lastHoverPoint = this.hoverPoint;\n }\n this.pointer.runPointActions(void 0, lastHoverPoint, true);\n }\n });\n this.innerContainer = createElement('div', {\n 'className': 'highcharts-inner-container'\n }, null, this.scrollingContainer);\n // Now move the container inside\n this.innerContainer.appendChild(this.container);\n // Don't run again\n this.setUpScrolling = null;\n };\n /**\n * These elements are moved over to the fixed renderer and stay fixed when the\n * user scrolls the chart\n * @private\n */\n Chart.prototype.moveFixedElements = function () {\n let container = this.container, fixedRenderer = this.fixedRenderer, fixedSelectors = [\n '.highcharts-breadcrumbs-group',\n '.highcharts-contextbutton',\n '.highcharts-credits',\n '.highcharts-legend',\n '.highcharts-legend-checkbox',\n '.highcharts-navigator-series',\n '.highcharts-navigator-xaxis',\n '.highcharts-navigator-yaxis',\n '.highcharts-navigator',\n '.highcharts-reset-zoom',\n '.highcharts-drillup-button',\n '.highcharts-scrollbar',\n '.highcharts-subtitle',\n '.highcharts-title'\n ], axisClass;\n if (this.scrollablePixelsX && !this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n else if (this.scrollablePixelsX && this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && !this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n if (axisClass) {\n fixedSelectors.push(`${axisClass}:not(.highcharts-radial-axis)`, `${axisClass}-labels:not(.highcharts-radial-axis-labels)`);\n }\n fixedSelectors.forEach(function (className) {\n [].forEach.call(container.querySelectorAll(className), function (elem) {\n (elem.namespaceURI === fixedRenderer.SVG_NS ?\n fixedRenderer.box :\n fixedRenderer.box.parentNode).appendChild(elem);\n elem.style.pointerEvents = 'auto';\n });\n });\n };\n /**\n * @private\n * @function Highcharts.Chart#applyFixed\n * @return {void}\n */\n Chart.prototype.applyFixed = function () {\n const firstTime = !this.fixedDiv, chartOptions = this.options.chart, scrollableOptions = chartOptions.scrollablePlotArea, Renderer = RendererRegistry.getRendererType();\n let fixedRenderer, scrollableWidth, scrollableHeight;\n // First render\n if (firstTime) {\n this.fixedDiv = createElement('div', {\n className: 'highcharts-fixed'\n }, {\n position: 'absolute',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: (chartOptions.style && chartOptions.style.zIndex || 0) + 2,\n top: 0\n }, null, true);\n if (this.scrollingContainer) {\n this.scrollingContainer.parentNode.insertBefore(this.fixedDiv, this.scrollingContainer);\n }\n this.renderTo.style.overflow = 'visible';\n this.fixedRenderer = fixedRenderer = new Renderer(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style);\n // Mask\n this.scrollableMask = fixedRenderer\n .path()\n .attr({\n fill: this.options.chart.backgroundColor || '#fff',\n 'fill-opacity': pick(scrollableOptions.opacity, 0.85),\n zIndex: -1\n })\n .addClass('highcharts-scrollable-mask')\n .add();\n addEvent(this, 'afterShowResetZoom', this.moveFixedElements);\n addEvent(this, 'afterApplyDrilldown', this.moveFixedElements);\n addEvent(this, 'afterLayOutTitles', this.moveFixedElements);\n }\n else {\n // Set the size of the fixed renderer to the visible width\n this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);\n }\n if (this.scrollableDirty || firstTime) {\n this.scrollableDirty = false;\n this.moveFixedElements();\n }\n // Increase the size of the scrollable renderer and background\n scrollableWidth = this.chartWidth + (this.scrollablePixelsX || 0);\n scrollableHeight = this.chartHeight + (this.scrollablePixelsY || 0);\n stop(this.container);\n this.container.style.width = scrollableWidth + 'px';\n this.container.style.height = scrollableHeight + 'px';\n this.renderer.boxWrapper.attr({\n width: scrollableWidth,\n height: scrollableHeight,\n viewBox: [0, 0, scrollableWidth, scrollableHeight].join(' ')\n });\n this.chartBackground.attr({\n width: scrollableWidth,\n height: scrollableHeight\n });\n this.scrollingContainer.style.height = this.chartHeight + 'px';\n // Set scroll position\n if (firstTime) {\n if (scrollableOptions.scrollPositionX) {\n this.scrollingContainer.scrollLeft =\n this.scrollablePixelsX *\n scrollableOptions.scrollPositionX;\n }\n if (scrollableOptions.scrollPositionY) {\n this.scrollingContainer.scrollTop =\n this.scrollablePixelsY *\n scrollableOptions.scrollPositionY;\n }\n }\n // Mask behind the left and right side\n let axisOffset = this.axisOffset, maskTop = this.plotTop - axisOffset[0] - 1, maskLeft = this.plotLeft - axisOffset[3] - 1, maskBottom = this.plotTop + this.plotHeight + axisOffset[2] + 1, maskRight = this.plotLeft + this.plotWidth + axisOffset[1] + 1, maskPlotRight = this.plotLeft + this.plotWidth -\n (this.scrollablePixelsX || 0), maskPlotBottom = this.plotTop + this.plotHeight -\n (this.scrollablePixelsY || 0), d;\n if (this.scrollablePixelsX) {\n d = [\n // Left side\n ['M', 0, maskTop],\n ['L', this.plotLeft - 1, maskTop],\n ['L', this.plotLeft - 1, maskBottom],\n ['L', 0, maskBottom],\n ['Z'],\n // Right side\n ['M', maskPlotRight, maskTop],\n ['L', this.chartWidth, maskTop],\n ['L', this.chartWidth, maskBottom],\n ['L', maskPlotRight, maskBottom],\n ['Z']\n ];\n }\n else if (this.scrollablePixelsY) {\n d = [\n // Top side\n ['M', maskLeft, 0],\n ['L', maskLeft, this.plotTop - 1],\n ['L', maskRight, this.plotTop - 1],\n ['L', maskRight, 0],\n ['Z'],\n // Bottom side\n ['M', maskLeft, maskPlotBottom],\n ['L', maskLeft, this.chartHeight],\n ['L', maskRight, this.chartHeight],\n ['L', maskRight, maskPlotBottom],\n ['Z']\n ];\n }\n else {\n d = [['M', 0, 0]];\n }\n if (this.redrawTrigger !== 'adjustHeight') {\n this.scrollableMask.attr({ d });\n }\n };\n addEvent(Axis, 'afterInit', function () {\n this.chart.scrollableDirty = true;\n });\n addEvent(Series, 'show', function () {\n this.chart.scrollableDirty = true;\n });\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for a scrollable plot area. This feature provides a minimum size for\n * the plot area of the chart. If the size gets smaller than this, typically\n * on mobile devices, a native browser scrollbar is presented. This scrollbar\n * provides smooth scrolling for the contents of the plot area, whereas the\n * title, legend and unaffected axes are fixed.\n *\n * Since v7.1.2, a scrollable plot area can be defined for either horizontal or\n * vertical scrolling, depending on whether the `minWidth` or `minHeight`\n * option is set.\n *\n * @sample highcharts/chart/scrollable-plotarea\n * Scrollable plot area\n * @sample highcharts/chart/scrollable-plotarea-vertical\n * Vertically scrollable plot area\n * @sample {gantt} gantt/chart/scrollable-plotarea-vertical\n * Gantt chart with vertically scrollable plot area\n *\n * @since 6.1.0\n * @product highcharts gantt\n * @apioption chart.scrollablePlotArea\n */\n /**\n * The minimum height for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.minHeight\n */\n /**\n * The minimum width for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.minWidth\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the left and 1 aligns it to the right.\n * Typically we would use 1 if the chart has right aligned Y axes.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.scrollPositionX\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the top and 1 aligns it to the bottom.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.scrollPositionY\n */\n /**\n * The opacity of mask applied on one of the sides of the plot\n * area.\n *\n * @sample {highcharts} highcharts/chart/scrollable-plotarea-opacity\n * Disabled opacity for the mask\n *\n * @type {number}\n * @default 0.85\n * @since 7.1.1\n * @apioption chart.scrollablePlotArea.opacity\n */\n (''); // keep doclets above in transpiled file\n\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackItem.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (FU, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { format } = FU;\n const { series: Series } = SeriesRegistry;\n const { destroyObjectProperties, fireEvent, isNumber, merge, pick } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * The class for stacks. Each stack, on a specific X value and either negative\n * or positive, has its own stack item.\n * @private\n */\n class StackItem {\n /* *\n *\n * Constructor\n *\n * */\n constructor(axis, options, negativeValue, x, stackOption) {\n const inverted = axis.chart.inverted, reversed = axis.reversed;\n this.axis = axis;\n // The stack goes to the left either if the stack has negative value\n // or when axis is reversed. XOR operator.\n const isNegative = (this.isNegative = !!negativeValue !== !!reversed);\n // Save the options to be able to style the label\n this.options = options = options || {};\n // Save the x value to be able to position the label later\n this.x = x;\n // Initialize total value\n this.total = null;\n this.cumulative = null;\n // This will keep each points' extremes stored by series.index and point\n // index\n this.points = {};\n this.hasValidPoints = false;\n // Save the stack option on the series configuration object,\n // and whether to treat it as percent\n this.stack = stackOption;\n this.leftCliff = 0;\n this.rightCliff = 0;\n // The align options and text align varies on whether the stack is\n // negative and if the chart is inverted or not.\n // First test the user supplied value, then use the dynamic.\n this.alignOptions = {\n align: options.align ||\n (inverted ? (isNegative ? 'left' : 'right') : 'center'),\n verticalAlign: options.verticalAlign ||\n (inverted ? 'middle' : isNegative ? 'bottom' : 'top'),\n y: options.y,\n x: options.x\n };\n this.textAlign =\n options.textAlign ||\n (inverted ? (!isNegative ? 'left' : 'right') : 'center');\n }\n /**\n * @private\n */\n destroy() {\n destroyObjectProperties(this, this.axis);\n }\n /**\n * Renders the stack total label and adds it to the stack label group.\n * @private\n */\n render(group) {\n const chart = this.axis.chart, options = this.options, formatOption = options.format, \n // Format the text in the label.\n str = formatOption ?\n format(formatOption, this, chart) :\n options.formatter.call(this);\n // Change the text to reflect the new total and set visibility to hidden\n // in case the serie is hidden\n if (this.label) {\n this.label.attr({ text: str, visibility: 'hidden' });\n }\n else {\n // Create new label\n this.label = chart.renderer.label(str, null, void 0, options.shape, void 0, void 0, options.useHTML, false, 'stack-labels');\n const attr = {\n r: options.borderRadius || 0,\n text: str,\n // set default padding to 5 as it is in datalabels #12308\n padding: pick(options.padding, 5),\n visibility: 'hidden' // hidden until setOffset is called\n };\n if (!chart.styledMode) {\n attr.fill = options.backgroundColor;\n attr.stroke = options.borderColor;\n attr['stroke-width'] = options.borderWidth;\n this.label.css(options.style || {});\n }\n this.label.attr(attr);\n if (!this.label.added) {\n this.label.add(group); // add to the labels-group\n }\n }\n // Rank it higher than data labels (#8742)\n this.label.labelrank = chart.plotSizeY;\n fireEvent(this, 'afterRender');\n }\n /**\n * Sets the offset that the stack has from the x value and repositions the\n * label.\n * @private\n */\n setOffset(xOffset, width, boxBottom, boxTop, defaultX, xAxis) {\n const { alignOptions, axis, label, options, textAlign } = this, chart = axis.chart, stackBox = this.getStackBox({\n xOffset,\n width,\n boxBottom,\n boxTop,\n defaultX,\n xAxis\n }), { verticalAlign } = alignOptions;\n if (label && stackBox) {\n const labelBox = label.getBBox(), padding = label.padding;\n let isJustify = pick(options.overflow, 'justify') === 'justify', visible;\n // Reset alignOptions property after justify #12337\n alignOptions.x = options.x || 0;\n alignOptions.y = options.y || 0;\n // Calculate the adjusted Stack position, to take into consideration\n // The size if the labelBox and vertical alignment as\n // well as the text alignment. It's need to be done to work with\n // default SVGLabel.align/justify methods.\n const { x, y } = this.adjustStackPosition({\n labelBox,\n verticalAlign,\n textAlign\n });\n stackBox.x -= x;\n stackBox.y -= y;\n // Align the label to the adjusted box.\n label.align(alignOptions, false, stackBox);\n // Check if label is inside the plotArea #12294\n visible = chart.isInsidePlot(label.alignAttr.x + alignOptions.x + x, label.alignAttr.y + alignOptions.y + y);\n if (!visible) {\n isJustify = false;\n }\n if (isJustify) {\n // Justify stackLabel into the alignBox\n Series.prototype.justifyDataLabel.call(axis, label, alignOptions, label.alignAttr, labelBox, stackBox);\n }\n // Add attr to aviod the default animation of justifyDataLabel.\n // Also add correct rotation with its rotation origin. #15129\n label.attr({\n x: label.alignAttr.x,\n y: label.alignAttr.y,\n rotation: options.rotation,\n rotationOriginX: labelBox.width / 2,\n rotationOriginY: labelBox.height / 2\n });\n // Check if the dataLabel should be visible.\n if (pick(!isJustify && options.crop, true)) {\n visible =\n isNumber(label.x) &&\n isNumber(label.y) &&\n chart.isInsidePlot(label.x - padding + label.width, label.y) &&\n chart.isInsidePlot(label.x + padding, label.y);\n }\n label[visible ? 'show' : 'hide']();\n }\n fireEvent(this, 'afterSetOffset', { xOffset, width });\n }\n /**\n * Adjust the stack BBox position, to take into consideration the alignment\n * of the dataLabel. This is necessary to make the stackDataLabel work with\n * core methods like `SVGLabel.adjust` and `Series.justifyDataLabel`.\n * @param AdjustStackPositionProps\n * @return {{x: number, y: number}} Adjusted BBox position of the stack.\n */\n adjustStackPosition({ labelBox, verticalAlign, textAlign }) {\n const factorMap = {\n bottom: 0,\n middle: 1,\n top: 2,\n right: 1,\n center: 0,\n left: -1\n }, verticalAlignFactor = factorMap[verticalAlign], textAlignFactor = factorMap[textAlign];\n return {\n x: labelBox.width / 2 + (labelBox.width / 2) * textAlignFactor,\n y: (labelBox.height / 2) * verticalAlignFactor\n };\n }\n /**\n * Get the bbox of the stack.\n * @private\n * @function Highcharts.StackItem#getStackBox\n * @return {BBoxObject} The x, y, height, width of the stack.\n */\n getStackBox(stackBoxProps) {\n const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?\n 100 :\n pick(boxTop, this.total, 0), y = axis.toPixels(totalStackValue), xAxis = stackBoxProps.xAxis || chart.xAxis[0], x = pick(defaultX, xAxis.translate(this.x)) + xOffset, yZero = axis.toPixels(boxBottom ||\n (isNumber(axis.min) &&\n axis.logarithmic &&\n axis.logarithmic.lin2log(axis.min)) ||\n 0), height = Math.abs(y - yZero), inverted = chart.inverted, neg = stackItem.isNegative;\n return inverted ?\n {\n x: (neg ? y : y - height) - chart.plotLeft,\n y: xAxis.height - x - width,\n width: height,\n height: width\n } : {\n x: x + xAxis.transB - chart.plotLeft,\n y: (neg ? y - height : y) - chart.plotTop,\n width: width,\n height: height\n };\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Stack of data points\n *\n * @product highcharts\n *\n * @interface Highcharts.StackItemObject\n */ /**\n * Alignment settings\n * @name Highcharts.StackItemObject#alignOptions\n * @type {Highcharts.AlignObject}\n */ /**\n * Related axis\n * @name Highcharts.StackItemObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Cumulative value of the stacked data points\n * @name Highcharts.StackItemObject#cumulative\n * @type {number}\n */ /**\n * True if on the negative side\n * @name Highcharts.StackItemObject#isNegative\n * @type {boolean}\n */ /**\n * Related SVG element\n * @name Highcharts.StackItemObject#label\n * @type {Highcharts.SVGElement}\n */ /**\n * Related stack options\n * @name Highcharts.StackItemObject#options\n * @type {Highcharts.YAxisStackLabelsOptions}\n */ /**\n * Total value of the stacked data points\n * @name Highcharts.StackItemObject#total\n * @type {number}\n */ /**\n * Shared x value of the stack\n * @name Highcharts.StackItemObject#x\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return StackItem;\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackingAxis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (A, Axis, SeriesRegistry, StackItem, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { getDeferredAnimation } = A;\n const { series: { prototype: seriesProto } } = SeriesRegistry;\n const { addEvent, correctFloat, defined, destroyObjectProperties, fireEvent, isArray, isNumber, objectEach, pick } = U;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Generate stacks for each series and calculate stacks total values\n *\n * @private\n * @function Highcharts.Chart#getStacks\n */\n function chartGetStacks() {\n const chart = this, inverted = chart.inverted;\n // reset stacks for each yAxis\n chart.yAxis.forEach((axis) => {\n if (axis.stacking && axis.stacking.stacks && axis.hasVisibleSeries) {\n axis.stacking.oldStacks = axis.stacking.stacks;\n }\n });\n chart.series.forEach((series) => {\n const xAxisOptions = series.xAxis && series.xAxis.options || {};\n if (series.options.stacking &&\n (series.visible === true ||\n chart.options.chart.ignoreHiddenSeries === false)) {\n series.stackKey = [\n series.type,\n pick(series.options.stack, ''),\n inverted ? xAxisOptions.top : xAxisOptions.left,\n inverted ? xAxisOptions.height : xAxisOptions.width\n ].join(',');\n }\n });\n }\n /**\n * @private\n */\n function onAxisDestroy() {\n const stacking = this.stacking;\n if (!stacking) {\n return;\n }\n const stacks = stacking.stacks;\n // Destroy each stack total\n objectEach(stacks, function (stack, stackKey) {\n destroyObjectProperties(stack);\n stacks[stackKey] = null;\n });\n if (stacking &&\n stacking.stackTotalGroup) {\n stacking.stackTotalGroup.destroy();\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n if (this.coll === 'yAxis' && !this.stacking) {\n this.stacking = new AxisAdditions(this);\n }\n }\n /**\n * Get stack indicator, according to it's x-value, to determine points with the\n * same x-value\n *\n * @private\n * @function Highcharts.Series#getStackIndicator\n */\n function seriesGetStackIndicator(stackIndicator, x, index, key) {\n // Update stack indicator, when:\n // first point in a stack || x changed || stack type (negative vs positive)\n // changed:\n if (!defined(stackIndicator) ||\n stackIndicator.x !== x ||\n (key && stackIndicator.stackKey !== key)) {\n stackIndicator = {\n x: x,\n index: 0,\n key: key,\n stackKey: key\n };\n }\n else {\n (stackIndicator).index++;\n }\n stackIndicator.key =\n [index, x, stackIndicator.index].join(',');\n return stackIndicator;\n }\n /**\n * Iterate over all stacks and compute the absolute values to percent\n *\n * @private\n * @function Highcharts.Series#modifyStacks\n */\n function seriesModifyStacks() {\n const series = this, yAxis = series.yAxis, stackKey = series.stackKey, stacks = yAxis.stacking.stacks, processedXData = series.processedXData, stacking = series.options.stacking, stacker = series[stacking + 'Stacker'];\n let stackIndicator;\n if (stacker) { // Modifier function exists (Series.percentStacker etc.)\n [stackKey, '-' + stackKey].forEach((key) => {\n let i = processedXData.length, x, stack, pointExtremes;\n while (i--) {\n x = processedXData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index, key);\n stack = stacks[key] && stacks[key][x];\n pointExtremes =\n stack && stack.points[stackIndicator.key];\n if (pointExtremes) {\n stacker.call(series, pointExtremes, stack, i);\n }\n }\n });\n }\n }\n /**\n * Modifier function for percent stacks. Blows up the stack to 100%.\n *\n * @private\n * @function Highcharts.Series#percentStacker\n */\n function seriesPercentStacker(pointExtremes, stack, i) {\n const totalFactor = stack.total ? 100 / stack.total : 0;\n // Y bottom value\n pointExtremes[0] = correctFloat(pointExtremes[0] * totalFactor);\n // Y value\n pointExtremes[1] = correctFloat(pointExtremes[1] * totalFactor);\n this.stackedYData[i] = pointExtremes[1];\n }\n /**\n * Set grouped points in a stack-like object. When `centerInCategory` is true,\n * and `stacking` is not enabled, we need a pseudo (horizontal) stack in order\n * to handle grouping of points within the same category.\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n * @return {void}\n */\n function seriesSetGroupedPoints() {\n const stacking = this.yAxis.stacking;\n if (this.options.centerInCategory &&\n (this.is('column') || this.is('columnrange')) &&\n // With stacking enabled, we already have stacks that we can compute\n // from\n !this.options.stacking &&\n // With only one series, we don't need to consider centerInCategory\n this.chart.series.length > 1) {\n seriesProto.setStackedPoints.call(this, 'group');\n // After updating, if we now have proper stacks, we must delete the group\n // pseudo stacks (#14986)\n }\n else if (stacking) {\n objectEach(stacking.stacks, (type, key) => {\n if (key.slice(-5) === 'group') {\n objectEach(type, (stack) => stack.destroy());\n delete stacking.stacks[key];\n }\n });\n }\n }\n /**\n * Adds series' points value to corresponding stack\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n */\n function seriesSetStackedPoints(stackingParam) {\n const chart = this.chart, stacking = stackingParam || this.options.stacking;\n if (!stacking || (this.visible !== true &&\n chart.options.chart.ignoreHiddenSeries !== false)) {\n return;\n }\n const series = this, xData = series.processedXData, yData = series.processedYData, stackedYData = [], yDataLength = yData.length, seriesOptions = series.options, threshold = seriesOptions.threshold, stackThreshold = pick(seriesOptions.startFromThreshold && threshold, 0), stackOption = seriesOptions.stack, stackKey = stackingParam ? `${series.type},${stacking}` : series.stackKey, negKey = '-' + stackKey, negStacks = series.negStacks, yAxis = stacking === 'group' ?\n chart.yAxis[0] :\n series.yAxis, stacks = yAxis.stacking.stacks, oldStacks = yAxis.stacking.oldStacks;\n let stackIndicator, isNegative, stack, other, key, pointKey, i, x, y;\n yAxis.stacking.stacksTouched += 1;\n // loop over the non-null y values and read them into a local array\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index);\n pointKey = stackIndicator.key;\n // Read stacked values into a stack based on the x value,\n // the sign of y and the stack key. Stacking is also handled for null\n // values (#739)\n isNegative = negStacks && y < (stackThreshold ? 0 : threshold);\n key = isNegative ? negKey : stackKey;\n // Create empty object for this stack if it doesn't exist yet\n if (!stacks[key]) {\n stacks[key] = {};\n }\n // Initialize StackItem for this x\n if (!stacks[key][x]) {\n if (oldStacks[key] &&\n oldStacks[key][x]) {\n stacks[key][x] = oldStacks[key][x];\n stacks[key][x].total = null;\n }\n else {\n stacks[key][x] = new StackItem(yAxis, yAxis.options.stackLabels, !!isNegative, x, stackOption);\n }\n }\n // If the StackItem doesn't exist, create it first\n stack = stacks[key][x];\n if (y !== null) {\n stack.points[pointKey] = stack.points[series.index] =\n [pick(stack.cumulative, stackThreshold)];\n // Record the base of the stack\n if (!defined(stack.cumulative)) {\n stack.base = pointKey;\n }\n stack.touched = yAxis.stacking.stacksTouched;\n // In area charts, if there are multiple points on the same X value,\n // let the area fill the full span of those points\n if (stackIndicator.index > 0 && series.singleStacks === false) {\n stack.points[pointKey][0] =\n stack.points[series.index + ',' + x + ',0'][0];\n }\n // When updating to null, reset the point stack (#7493)\n }\n else {\n stack.points[pointKey] = stack.points[series.index] =\n null;\n }\n // Add value to the stack total\n if (stacking === 'percent') {\n // Percent stacked column, totals are the same for the positive and\n // negative stacks\n other = isNegative ? stackKey : negKey;\n if (negStacks && stacks[other] && stacks[other][x]) {\n other = stacks[other][x];\n stack.total = other.total =\n Math.max(other.total, stack.total) +\n Math.abs(y) ||\n 0;\n // Percent stacked areas\n }\n else {\n stack.total =\n correctFloat(stack.total + (Math.abs(y) || 0));\n }\n }\n else if (stacking === 'group') {\n if (isArray(y)) {\n y = y[0];\n }\n // In this stack, the total is the number of valid points\n if (y !== null) {\n stack.total = (stack.total || 0) + 1;\n }\n }\n else {\n stack.total = correctFloat(stack.total + (y || 0));\n }\n if (stacking === 'group') {\n // This point's index within the stack, pushed to stack.points[1]\n stack.cumulative = (stack.total || 1) - 1;\n }\n else {\n stack.cumulative = correctFloat(pick(stack.cumulative, stackThreshold) +\n (y || 0));\n }\n if (y !== null) {\n stack.points[pointKey].push(stack.cumulative);\n stackedYData[i] = stack.cumulative;\n stack.hasValidPoints = true;\n }\n }\n if (stacking === 'percent') {\n yAxis.stacking.usePercentage = true;\n }\n if (stacking !== 'group') {\n this.stackedYData = stackedYData; // To be used in getExtremes\n }\n // Reset old stacks\n yAxis.stacking.oldStacks = {};\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * Adds stacking support to axes.\n * @private\n * @class\n */\n class AxisAdditions {\n /* *\n *\n * Constructors\n *\n * */\n constructor(axis) {\n this.oldStacks = {};\n this.stacks = {};\n this.stacksTouched = 0;\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Build the stacks from top down\n * @private\n */\n buildStacks() {\n const stacking = this;\n const axis = stacking.axis;\n const axisSeries = axis.series;\n const reversedStacks = axis.options.reversedStacks;\n const len = axisSeries.length;\n let actualSeries, i;\n stacking.usePercentage = false;\n i = len;\n while (i--) {\n actualSeries = axisSeries[reversedStacks ? i : len - i - 1];\n actualSeries.setStackedPoints();\n actualSeries.setGroupedPoints();\n }\n // Loop up again to compute percent and stream stack\n for (i = 0; i < len; i++) {\n axisSeries[i].modifyStacks();\n }\n fireEvent(axis, 'afterBuildStacks');\n }\n /**\n * @private\n */\n cleanStacks() {\n const stacking = this;\n let stacks;\n if (stacking.oldStacks) {\n stacks = stacking.stacks = stacking.oldStacks;\n }\n // reset stacks\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.cumulative = stack.total;\n });\n });\n }\n /**\n * Set all the stacks to initial states and destroy unused ones.\n * @private\n */\n resetStacks() {\n objectEach(this.stacks, (type) => {\n objectEach(type, (stack, x) => {\n // Clean up memory after point deletion (#1044, #4320)\n if (isNumber(stack.touched) &&\n stack.touched < this.stacksTouched) {\n stack.destroy();\n delete type[x];\n // Reset stacks\n }\n else {\n stack.total = null;\n stack.cumulative = null;\n }\n });\n });\n }\n /**\n * @private\n */\n renderStackTotals() {\n const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels &&\n axis.options.stackLabels.animation, animationConfig = getDeferredAnimation(chart, stackLabelsAnim || false), stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||\n renderer\n .g('stack-labels')\n .attr({\n zIndex: 6,\n opacity: 0\n })\n .add());\n // plotLeft/Top will change when y axis gets wider so we need to\n // translate the stackTotalGroup at every render call. See bug #506\n // and #516\n stackTotalGroup.translate(chart.plotLeft, chart.plotTop);\n // Render each stack total\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.render(stackTotalGroup);\n });\n });\n stackTotalGroup.animate({\n opacity: 1\n }, animationConfig);\n }\n }\n /* *\n *\n * Composition\n *\n * */\n var StackingAxis;\n (function (StackingAxis) {\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis with stacking support.\n * @private\n */\n function compose(AxisClass, ChartClass, SeriesClass) {\n if (U.pushUnique(composedMembers, AxisClass)) {\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'destroy', onAxisDestroy);\n }\n if (U.pushUnique(composedMembers, ChartClass)) {\n const chartProto = ChartClass.prototype;\n chartProto.getStacks = chartGetStacks;\n }\n if (U.pushUnique(composedMembers, SeriesClass)) {\n const seriesProto = SeriesClass.prototype;\n seriesProto.getStackIndicator = seriesGetStackIndicator;\n seriesProto.modifyStacks = seriesModifyStacks;\n seriesProto.percentStacker = seriesPercentStacker;\n seriesProto.setGroupedPoints = seriesSetGroupedPoints;\n seriesProto.setStackedPoints = seriesSetStackedPoints;\n }\n }\n StackingAxis.compose = compose;\n })(StackingAxis || (StackingAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return StackingAxis;\n });\n _registerModule(_modules, 'Series/Line/LineSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { defined, merge } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * The line series is the base type and is therefor the series base prototype.\n *\n * @private\n */\n class LineSeries extends Series {\n constructor() {\n /* *\n *\n * Static Functions\n *\n * */\n super(...arguments);\n /* *\n *\n * Properties\n *\n * */\n this.data = void 0;\n this.options = void 0;\n this.points = void 0;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw the graph. Called internally when rendering line-like series\n * types. The first time it generates the `series.graph` item and\n * optionally other series-wide items like `series.area` for area\n * charts. On subsequent calls these items are updated with new\n * positions and attributes.\n *\n * @function Highcharts.Series#drawGraph\n */\n drawGraph() {\n const series = this, options = this.options, graphPath = (this.gappedPath || this.getGraphPath).call(this), styledMode = this.chart.styledMode;\n let props = [[\n 'graph',\n 'highcharts-graph'\n ]];\n // Presentational properties\n if (!styledMode) {\n props[0].push((options.lineColor ||\n this.color ||\n \"#cccccc\" /* Palette.neutralColor20 */ // when colorByPoint = true\n ), options.dashStyle);\n }\n props = series.getZonesGraphs(props);\n // Draw the graph\n props.forEach(function (prop, i) {\n const graphKey = prop[0];\n let attribs, graph = series[graphKey];\n const verb = graph ? 'animate' : 'attr';\n if (graph) {\n graph.endX = series.preventGraphAnimation ?\n null :\n graphPath.xMap;\n graph.animate({ d: graphPath });\n }\n else if (graphPath.length) { // #1487\n /**\n * SVG element of area-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone areas, accessible\n * via `series['zone-area-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#area\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * SVG element of line-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone lines, accessible\n * via `series['zone-graph-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#graph\n * @type {Highcharts.SVGElement|undefined}\n */\n series[graphKey] = graph = series.chart.renderer\n .path(graphPath)\n .addClass(prop[1])\n .attr({ zIndex: 1 }) // #1069\n .add(series.group);\n }\n if (graph && !styledMode) {\n attribs = {\n 'stroke': prop[2],\n 'stroke-width': options.lineWidth || 0,\n // Polygon series use filled graph\n 'fill': (series.fillGraph && series.color) || 'none'\n };\n // Apply dash style\n if (prop[3]) {\n attribs.dashstyle = prop[3];\n // The reason for the `else if` is that linecaps don't mix well\n // with dashstyle. The gaps get partially filled by the\n // linecap.\n }\n else if (options.linecap !== 'square') {\n attribs['stroke-linecap'] =\n attribs['stroke-linejoin'] = 'round';\n }\n graph[verb](attribs)\n // Add shadow to normal series (0) or to first\n // zone (1) #3932\n .shadow((i < 2) && options.shadow);\n }\n // Helpers for animation\n if (graph) {\n graph.startX = graphPath.xMap;\n graph.isArea = graphPath.isArea; // For arearange animation\n }\n });\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the graph path.\n *\n * @private\n */\n getGraphPath(points, nullsAsZeroes, connectCliffs) {\n const series = this, options = series.options, graphPath = [], xMap = [];\n let gap, step = options.step;\n points = points || series.points;\n // Bottom of a stack is reversed\n const reversed = points.reversed;\n if (reversed) {\n points.reverse();\n }\n // Reverse the steps (#5004)\n step = {\n right: 1,\n center: 2\n }[step] || (step && 3);\n if (step && reversed) {\n step = 4 - step;\n }\n // Remove invalid points, especially in spline (#5015)\n points = this.getValidPoints(points, false, !(options.connectNulls && !nullsAsZeroes && !connectCliffs));\n // Build the line\n points.forEach(function (point, i) {\n const plotX = point.plotX, plotY = point.plotY, lastPoint = points[i - 1], isNull = point.isNull || typeof plotY !== 'number';\n // the path to this point from the previous\n let pathToPoint;\n if ((point.leftCliff || (lastPoint && lastPoint.rightCliff)) &&\n !connectCliffs) {\n gap = true; // ... and continue\n }\n // Line series, nullsAsZeroes is not handled\n if (isNull && !defined(nullsAsZeroes) && i > 0) {\n gap = !options.connectNulls;\n // Area series, nullsAsZeroes is set\n }\n else if (isNull && !nullsAsZeroes) {\n gap = true;\n }\n else {\n if (i === 0 || gap) {\n pathToPoint = [[\n 'M',\n point.plotX,\n point.plotY\n ]];\n // Generate the spline as defined in the SplineSeries object\n }\n else if (series.getPointSpline) {\n pathToPoint = [series.getPointSpline(points, point, i)];\n }\n else if (step) {\n if (step === 1) { // right\n pathToPoint = [[\n 'L',\n lastPoint.plotX,\n plotY\n ]];\n }\n else if (step === 2) { // center\n pathToPoint = [[\n 'L',\n (lastPoint.plotX + plotX) / 2,\n lastPoint.plotY\n ], [\n 'L',\n (lastPoint.plotX + plotX) / 2,\n plotY\n ]];\n }\n else {\n pathToPoint = [[\n 'L',\n plotX,\n lastPoint.plotY\n ]];\n }\n pathToPoint.push([\n 'L',\n plotX,\n plotY\n ]);\n }\n else {\n // normal line to next point\n pathToPoint = [[\n 'L',\n plotX,\n plotY\n ]];\n }\n // Prepare for animation. When step is enabled, there are\n // two path nodes for each x value.\n xMap.push(point.x);\n if (step) {\n xMap.push(point.x);\n if (step === 2) { // step = center (#8073)\n xMap.push(point.x);\n }\n }\n graphPath.push.apply(graphPath, pathToPoint);\n gap = false;\n }\n });\n graphPath.xMap = xMap;\n series.graphPath = graphPath;\n return graphPath;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get zones properties for building graphs. Extendable by series with\n * multiple lines within one series.\n *\n * @private\n */\n getZonesGraphs(props) {\n // Add the zone properties if any\n this.zones.forEach(function (zone, i) {\n const propset = [\n 'zone-graph-' + i,\n 'highcharts-graph highcharts-zone-graph-' + i + ' ' +\n (zone.className || '')\n ];\n if (!this.chart.styledMode) {\n propset.push((zone.color || this.color), (zone.dashStyle || this.options.dashStyle));\n }\n props.push(propset);\n }, this);\n return props;\n }\n }\n LineSeries.defaultOptions = merge(Series.defaultOptions, \n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n {\n legendSymbol: 'lineMarker'\n });\n SeriesRegistry.registerSeriesType('line', LineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A line series displays information as a series of data points connected by\n * straight line segments.\n *\n * @sample {highcharts} highcharts/demo/line-basic/\n * Line chart\n * @sample {highstock} stock/demo/basic-line/\n * Line chart\n *\n * @extends plotOptions.series\n * @product highcharts highstock\n * @apioption plotOptions.line\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * A `line` series. If the [type](#series.line.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.line\n * @excluding dataParser,dataURL\n * @product highcharts highstock\n * @apioption series.line\n */\n /**\n * An array of data points for the series. For the `line` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 1],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.line.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * **Note:** In TypeScript you have to extend `PointOptionsObject` with an\n * additional declaration to allow custom data types:\n * ```ts\n * declare module `highcharts` {\n * interface PointOptionsObject {\n * custom: Record;\n * }\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @declare Highcharts.PointOptionsObject\n * @type {Array|null|*>}\n * @apioption series.line.data\n */\n /**\n * An additional, individual class name for the data point's graphic\n * representation. Changes to a point's color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.className\n */\n /**\n * Individual color for the point. By default the color is pulled from\n * the global `colors` array.\n *\n * In styled mode, the `color` option doesn't take effect. Instead, use\n * `colorIndex`.\n *\n * @sample {highcharts} highcharts/point/color/\n * Mark the highest point\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock gantt\n * @apioption series.line.data.color\n */\n /**\n * A specific color index to use for the point, so its graphic representations\n * are given the class name `highcharts-color-{n}`. In styled mode this will\n * change the color of the graphic. In non-styled mode, the color is set by the\n * `fill` attribute, so the change in class name won't have a visual effect by\n * default.\n *\n * Since v11, CSS variables on the form `--highcharts-color-{n}` make changing\n * the color scheme very convenient.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.colorIndex\n */\n /**\n * A reserved subspace to store options and values for customized functionality.\n * Here you can add additional data for your own event callbacks and formatter\n * callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption series.line.data.custom\n */\n /**\n * Individual data label for each point. The options are the same as\n * the ones for [plotOptions.series.dataLabels](\n * #plotOptions.series.dataLabels).\n *\n * @sample highcharts/point/datalabels/\n * Show a label for the last value\n *\n * @declare Highcharts.DataLabelsOptions\n * @extends plotOptions.line.dataLabels\n * @product highcharts highstock gantt\n * @apioption series.line.data.dataLabels\n */\n /**\n * A description of the point to add to the screen reader information\n * about the point.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption series.line.data.description\n */\n /**\n * An id for the point. This can be used after render time to get a\n * pointer to the point object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/point/id/\n * Remove an id'd point\n *\n * @type {string}\n * @since 1.2.0\n * @product highcharts highstock gantt\n * @apioption series.line.data.id\n */\n /**\n * The rank for this point's data label in case of collision. If two\n * data labels are about to overlap, only the one with the highest `labelrank`\n * will be drawn.\n *\n * @type {number}\n * @apioption series.line.data.labelrank\n */\n /**\n * The name of the point as shown in the legend, tooltip, dataLabels, etc.\n *\n * @see [xAxis.uniqueNames](#xAxis.uniqueNames)\n *\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Point names\n *\n * @type {string}\n * @apioption series.line.data.name\n */\n /**\n * Whether the data point is selected initially.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption series.line.data.selected\n */\n /**\n * The x value of the point. For datetime axes, the X value is the timestamp\n * in milliseconds since 1970.\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.line.data.x\n */\n /**\n * The y value of the point.\n *\n * @type {number|null}\n * @product highcharts highstock\n * @apioption series.line.data.y\n */\n /**\n * The individual point events.\n *\n * @extends plotOptions.series.point.events\n * @product highcharts highstock gantt\n * @apioption series.line.data.events\n */\n /**\n * Options for the point markers of line-like series.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n * @extends plotOptions.series.marker\n * @product highcharts highstock\n * @apioption series.line.data.marker\n */\n ''; // include precedent doclets in transpilat\n\n return LineSeries;\n });\n _registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Core/Color/Color.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Color, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { parse: color } = Color;\n const { seriesTypes: { line: LineSeries } } = SeriesRegistry;\n const { extend, merge, objectEach, pick } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * Area series type.\n *\n * @private\n * @class\n * @name AreaSeries\n *\n * @augments LineSeries\n */\n class AreaSeries extends LineSeries {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n super(...arguments);\n this.data = void 0;\n this.options = void 0;\n this.points = void 0;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Draw the graph and the underlying area. This method calls the Series\n * base function and adds the area. The areaPath is calculated in the\n * getSegmentPath method called from Series.prototype.drawGraph.\n * @private\n */\n drawGraph() {\n // Define or reset areaPath\n this.areaPath = [];\n // Call the base method\n super.drawGraph.apply(this);\n // Define local variables\n const series = this, areaPath = this.areaPath, options = this.options, zones = this.zones, props = [[\n 'area',\n 'highcharts-area',\n this.color,\n options.fillColor\n ]]; // area name, main color, fill color\n zones.forEach(function (zone, i) {\n props.push([\n 'zone-area-' + i,\n 'highcharts-area highcharts-zone-area-' + i + ' ' +\n zone.className,\n zone.color || series.color,\n zone.fillColor || options.fillColor\n ]);\n });\n props.forEach(function (prop) {\n const areaKey = prop[0], attribs = {};\n let area = series[areaKey];\n const verb = area ? 'animate' : 'attr';\n // Create or update the area\n if (area) { // update\n area.endX = series.preventGraphAnimation ?\n null :\n areaPath.xMap;\n area.animate({ d: areaPath });\n }\n else { // create\n attribs.zIndex = 0; // #1069\n area = series[areaKey] = series.chart.renderer\n .path(areaPath)\n .addClass(prop[1])\n .add(series.group);\n area.isArea = true;\n }\n if (!series.chart.styledMode) {\n attribs.fill = pick(prop[3], color(prop[2])\n .setOpacity(pick(options.fillOpacity, 0.75))\n .get());\n }\n area[verb](attribs);\n area.startX = areaPath.xMap;\n area.shiftUnit = options.step ? 2 : 1;\n });\n }\n /**\n * @private\n */\n getGraphPath(points) {\n const getGraphPath = LineSeries.prototype.getGraphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, bottomPoints = [], graphPoints = [], seriesIndex = this.index, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909\n yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574\n options.connectNulls, stacking === 'percent'), \n // To display null points in underlying stacked series, this\n // series graph must be broken, and the area also fall down to\n // fill the gap left by the null point. #2069\n addDummyPoints = function (i, otherI, side) {\n const point = points[i], stackedValues = stacking &&\n stacks[point.x].points[seriesIndex], nullVal = point[side + 'Null'] || 0, cliffVal = point[side + 'Cliff'] || 0;\n let top, bottom, isNull = true;\n if (cliffVal || nullVal) {\n top = (nullVal ?\n stackedValues[0] :\n stackedValues[1]) + cliffVal;\n bottom = stackedValues[0] + cliffVal;\n isNull = !!nullVal;\n }\n else if (!stacking &&\n points[otherI] &&\n points[otherI].isNull) {\n top = bottom = threshold;\n }\n // Add to the top and bottom line of the area\n if (typeof top !== 'undefined') {\n graphPoints.push({\n plotX: plotX,\n plotY: top === null ?\n translatedThreshold :\n yAxis.getThreshold(top),\n isNull: isNull,\n isCliff: true\n });\n bottomPoints.push({\n plotX: plotX,\n plotY: bottom === null ?\n translatedThreshold :\n yAxis.getThreshold(bottom),\n doCurve: false // #1041, gaps in areaspline areas\n });\n }\n };\n let plotX, isNull, yBottom;\n // Find what points to use\n points = points || this.points;\n // Fill in missing points\n if (stacking) {\n points = this.getStackPoints(points);\n }\n for (let i = 0, iEnd = points.length; i < iEnd; ++i) {\n // Reset after series.update of stacking property (#12033)\n if (!stacking) {\n points[i].leftCliff = points[i].rightCliff =\n points[i].leftNull = points[i].rightNull = void 0;\n }\n isNull = points[i].isNull;\n plotX = pick(points[i].rectPlotX, points[i].plotX);\n yBottom = stacking ?\n pick(points[i].yBottom, translatedThreshold) :\n translatedThreshold;\n if (!isNull || connectNulls) {\n if (!connectNulls) {\n addDummyPoints(i, i - 1, 'left');\n }\n // Skip null point when stacking is false and connectNulls\n // true\n if (!(isNull && !stacking && connectNulls)) {\n graphPoints.push(points[i]);\n bottomPoints.push({\n x: i,\n plotX: plotX,\n plotY: yBottom\n });\n }\n if (!connectNulls) {\n addDummyPoints(i, i + 1, 'right');\n }\n }\n }\n const topPath = getGraphPath.call(this, graphPoints, true, true);\n bottomPoints.reversed = true;\n const bottomPath = getGraphPath.call(this, bottomPoints, true, true);\n const firstBottomPoint = bottomPath[0];\n if (firstBottomPoint && firstBottomPoint[0] === 'M') {\n bottomPath[0] = ['L', firstBottomPoint[1], firstBottomPoint[2]];\n }\n const areaPath = topPath.concat(bottomPath);\n if (areaPath.length) {\n areaPath.push(['Z']);\n }\n // TODO: don't set leftCliff and rightCliff when connectNulls?\n const graphPath = getGraphPath\n .call(this, graphPoints, false, connectNulls);\n areaPath.xMap = topPath.xMap;\n this.areaPath = areaPath;\n return graphPath;\n }\n /**\n * Return an array of stacked points, where null and missing points are\n * replaced by dummy points in order for gaps to be drawn correctly in\n * stacks.\n * @private\n */\n getStackPoints(points) {\n const series = this, segment = [], keys = [], xAxis = this.xAxis, yAxis = this.yAxis, stack = yAxis.stacking.stacks[this.stackKey], pointMap = {}, yAxisSeries = yAxis.series, seriesLength = yAxisSeries.length, upOrDown = yAxis.options.reversedStacks ? 1 : -1, seriesIndex = yAxisSeries.indexOf(series);\n points = points || this.points;\n if (this.options.stacking) {\n for (let i = 0; i < points.length; i++) {\n // Reset after point update (#7326)\n points[i].leftNull = points[i].rightNull = void 0;\n // Create a map where we can quickly look up the points by\n // their X values.\n pointMap[points[i].x] = points[i];\n }\n // Sort the keys (#1651)\n objectEach(stack, function (stackX, x) {\n // nulled after switching between\n // grouping and not (#1651, #2336)\n if (stackX.total !== null) {\n keys.push(x);\n }\n });\n keys.sort(function (a, b) {\n return a - b;\n });\n const visibleSeries = yAxisSeries.map((s) => s.visible);\n keys.forEach(function (x, idx) {\n let y = 0, stackPoint, stackedValues;\n if (pointMap[x] && !pointMap[x].isNull) {\n segment.push(pointMap[x]);\n // Find left and right cliff. -1 goes left, 1 goes\n // right.\n [-1, 1].forEach(function (direction) {\n const nullName = direction === 1 ?\n 'rightNull' :\n 'leftNull', cliffName = direction === 1 ?\n 'rightCliff' :\n 'leftCliff', otherStack = stack[keys[idx + direction]];\n let cliff = 0;\n // If there is a stack next to this one,\n // to the left or to the right...\n if (otherStack) {\n let i = seriesIndex;\n // Can go either up or down,\n // depending on reversedStacks\n while (i >= 0 && i < seriesLength) {\n const si = yAxisSeries[i].index;\n stackPoint = otherStack.points[si];\n if (!stackPoint) {\n // If the next point in this series is\n // missing, mark the point with\n // point.leftNull or point.rightNull = true.\n if (si === series.index) {\n pointMap[x][nullName] = true;\n // If there are missing points in the next\n // stack in any of the series below this\n // one, we need to substract the missing\n // values and add a hiatus to the left or\n // right.\n }\n else if (visibleSeries[i]) {\n stackedValues = stack[x].points[si];\n if (stackedValues) {\n cliff -= (stackedValues[1] -\n stackedValues[0]);\n }\n }\n }\n // When reversedStacks is true, loop up,\n // else loop down\n i += upOrDown;\n }\n }\n pointMap[x][cliffName] = cliff;\n });\n // There is no point for this X value in this series, so we\n // insert a dummy point in order for the areas to be drawn\n // correctly.\n }\n else {\n // Loop down the stack to find the series below this\n // one that has a value (#1991)\n let i = seriesIndex;\n while (i >= 0 && i < seriesLength) {\n const si = yAxisSeries[i].index;\n stackPoint = stack[x].points[si];\n if (stackPoint) {\n y = stackPoint[1];\n break;\n }\n // When reversedStacks is true, loop up, else loop\n // down\n i += upOrDown;\n }\n y = pick(y, 0);\n y = yAxis.translate(// #6272\n y, 0, 1, 0, 1);\n segment.push({\n isNull: true,\n plotX: xAxis.translate(// #6272\n x, 0, 0, 0, 1),\n x: x,\n plotY: y,\n yBottom: y\n });\n }\n });\n }\n return segment;\n }\n }\n /**\n * The area series type.\n *\n * @sample {highcharts} highcharts/demo/area-basic/\n * Area chart\n * @sample {highstock} stock/demo/area/\n * Area chart\n *\n * @extends plotOptions.line\n * @excluding useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.area\n */\n AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, {\n /**\n * @see [fillColor](#plotOptions.area.fillColor)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @apioption plotOptions.area.color\n */\n /**\n * Fill color or gradient for the area. When `null`, the series' `color`\n * is used with the series' `fillOpacity`.\n *\n * In styled mode, the fill color can be set with the `.highcharts-area`\n * class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/\n * Null by default\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.fillColor\n */\n /**\n * Fill opacity for the area. When you set an explicit `fillColor`,\n * the `fillOpacity` is not applied. Instead, you should define the\n * opacity in the `fillColor` with an rgba color definition. The\n * `fillOpacity` setting, also the default setting, overrides the alpha\n * component of the `color` setting.\n *\n * In styled mode, the fill opacity can be set with the\n * `.highcharts-area` class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillopacity/\n * Automatic fill color and fill opacity of 0.1\n *\n * @type {number}\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @product highcharts highstock\n * @apioption plotOptions.area.fillOpacity\n */\n /**\n * A separate color for the graph line. By default the line takes the\n * `color` of the series, but the lineColor setting allows setting a\n * separate color for the line without altering the `fillColor`.\n *\n * In styled mode, the line stroke can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/area-linecolor/\n * Dark gray line\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.lineColor\n */\n /**\n * A separate color for the negative part of the area.\n *\n * In styled mode, a negative color is set with the\n * `.highcharts-negative` class name.\n *\n * @see [negativeColor](#plotOptions.area.negativeColor)\n *\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Negative color in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.area.negativeFillColor\n */\n /**\n * Whether the whole area or just the line should respond to mouseover\n * tooltips and other mouse or touch events.\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/\n * Display the tooltip when the area is hovered\n *\n * @type {boolean}\n * @default false\n * @since 1.1.6\n * @product highcharts highstock\n * @apioption plotOptions.area.trackByArea\n */\n /**\n * The Y axis value to serve as the base for the area, for\n * distinguishing between values above and below a threshold. The area\n * between the graph and the threshold is filled.\n *\n * * If a number is given, the Y axis will scale to the threshold.\n * * If `null`, the scaling behaves like a line series with fill between\n * the graph and the Y axis minimum.\n * * If `Infinity` or `-Infinity`, the area between the graph and the\n * corresponding Y axis extreme is filled (since v6.1.0).\n *\n * @sample {highcharts} highcharts/plotoptions/area-threshold/\n * A threshold of 100\n * @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/\n * A threshold of Infinity\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts highstock\n */\n threshold: 0,\n legendSymbol: 'rectangle'\n });\n extend(AreaSeries.prototype, {\n singleStacks: false\n });\n SeriesRegistry.registerSeriesType('area', AreaSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `area` series. If the [type](#series.area.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.area\n * @excluding dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.area\n */\n /**\n * @see [fillColor](#series.area.fillColor)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.color\n */\n /**\n * An array of data points for the series. For the `area` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` * and `pointInterval` given in the series options. If the\n * axis has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 7],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.area.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.area.data\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.fillColor\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillColor](#series.area.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption series.area.fillOpacity\n */\n ''; // adds doclets above to transpilat\n\n return AreaSeries;\n });\n _registerModule(_modules, 'Series/Spline/SplineSeries.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { line: LineSeries } = SeriesRegistry.seriesTypes;\n const { merge, pick } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * Spline series type.\n *\n * @private\n */\n class SplineSeries extends LineSeries {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n super(...arguments);\n /* *\n *\n * Properties\n *\n * */\n this.data = void 0;\n this.options = void 0;\n this.points = void 0;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the spline segment from a given point's previous neighbour to the\n * given point.\n *\n * @private\n * @function Highcharts.seriesTypes.spline#getPointSpline\n */\n getPointSpline(points, point, i) {\n const \n // 1 means control points midway between points, 2 means 1/3\n // from the point, 3 is 1/4 etc\n smoothing = 1.5, denom = smoothing + 1, plotX = point.plotX || 0, plotY = point.plotY || 0, lastPoint = points[i - 1], nextPoint = points[i + 1];\n let leftContX, leftContY, rightContX, rightContY;\n /**\n * @private\n */\n function doCurve(otherPoint) {\n return otherPoint &&\n !otherPoint.isNull &&\n otherPoint.doCurve !== false &&\n // #6387, area splines next to null:\n !point.isCliff;\n }\n // Find control points\n if (doCurve(lastPoint) && doCurve(nextPoint)) {\n const lastX = lastPoint.plotX || 0, lastY = lastPoint.plotY || 0, nextX = nextPoint.plotX || 0, nextY = nextPoint.plotY || 0;\n let correction = 0;\n leftContX = (smoothing * plotX + lastX) / denom;\n leftContY = (smoothing * plotY + lastY) / denom;\n rightContX = (smoothing * plotX + nextX) / denom;\n rightContY = (smoothing * plotY + nextY) / denom;\n // Have the two control points make a straight line through main\n // point\n if (rightContX !== leftContX) { // #5016, division by zero\n correction = (((rightContY - leftContY) *\n (rightContX - plotX)) /\n (rightContX - leftContX) + plotY - rightContY);\n }\n leftContY += correction;\n rightContY += correction;\n // to prevent false extremes, check that control points are\n // between neighbouring points' y values\n if (leftContY > lastY && leftContY > plotY) {\n leftContY = Math.max(lastY, plotY);\n // mirror of left control point\n rightContY = 2 * plotY - leftContY;\n }\n else if (leftContY < lastY && leftContY < plotY) {\n leftContY = Math.min(lastY, plotY);\n rightContY = 2 * plotY - leftContY;\n }\n if (rightContY > nextY && rightContY > plotY) {\n rightContY = Math.max(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n else if (rightContY < nextY && rightContY < plotY) {\n rightContY = Math.min(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n // record for drawing in next point\n point.rightContX = rightContX;\n point.rightContY = rightContY;\n }\n // Visualize control points for debugging\n /*\n if (leftContX) {\n this.chart.renderer.circle(\n leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n if (rightContX) {\n this.chart.renderer.circle(\n rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n // */\n const ret = [\n 'C',\n pick(lastPoint.rightContX, lastPoint.plotX, 0),\n pick(lastPoint.rightContY, lastPoint.plotY, 0),\n pick(leftContX, plotX, 0),\n pick(leftContY, plotY, 0),\n plotX,\n plotY\n ];\n // reset for updating series later\n lastPoint.rightContX = lastPoint.rightContY = void 0;\n return ret;\n }\n }\n /**\n * A spline series is a special type of line series, where the segments\n * between the data points are smoothed.\n *\n * @sample {highcharts} highcharts/demo/spline-irregular-time/\n * Spline chart\n * @sample {highstock} stock/demo/spline/\n * Spline chart\n *\n * @extends plotOptions.series\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @optionparent plotOptions.spline\n */\n SplineSeries.defaultOptions = merge(LineSeries.defaultOptions);\n SeriesRegistry.registerSeriesType('spline', SplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `spline` series. If the [type](#series.spline.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.spline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.spline\n */\n /**\n * An array of data points for the series. For the `spline` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.spline.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 0,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.spline.data\n */\n ''; // adds doclets above intro transpilat\n\n return SplineSeries;\n });\n _registerModule(_modules, 'Series/AreaSpline/AreaSplineSeries.js', [_modules['Series/Spline/SplineSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SplineSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { area: AreaSeries, area: { prototype: areaProto } } = SeriesRegistry.seriesTypes;\n const { extend, merge } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * AreaSpline series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.areaspline\n *\n * @augments Highcharts.Series\n */\n class AreaSplineSeries extends SplineSeries {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n super(...arguments);\n /* *\n *\n * Properties\n *\n * */\n this.data = void 0;\n this.points = void 0;\n this.options = void 0;\n }\n }\n AreaSplineSeries.defaultOptions = merge(SplineSeries.defaultOptions, AreaSeries.defaultOptions);\n extend(AreaSplineSeries.prototype, {\n getGraphPath: areaProto.getGraphPath,\n getStackPoints: areaProto.getStackPoints,\n drawGraph: areaProto.drawGraph\n });\n SeriesRegistry.registerSeriesType('areaspline', AreaSplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * The area spline series is an area series where the graph between the\n * points is smoothed into a spline.\n *\n * @sample {highcharts} highcharts/demo/areaspline/\n * Area spline chart\n * @sample {highstock} stock/demo/areaspline/\n * Area spline chart\n *\n * @extends plotOptions.area\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption plotOptions.areaspline\n */\n /**\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.color\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.fillColor\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption plotOptions.areaspline.fillOpacity\n */\n /**\n * A `areaspline` series. If the [type](#series.areaspline.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n *\n * @extends series,plotOptions.areaspline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.areaspline\n */\n /**\n * @see [fillColor](#series.areaspline.fillColor)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.color\n */\n /**\n * An array of data points for the series. For the `areaspline` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 10],\n * [1, 9],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.areaspline.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 4,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.areaspline.data\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.fillColor\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillColor](#series.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption series.areaspline.fillOpacity\n */\n ''; // adds doclets above into transpilat\n\n return AreaSplineSeries;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Column series display one column per value along an X axis.\n *\n * @sample {highcharts} highcharts/demo/column-basic/\n * Column chart\n * @sample {highstock} stock/demo/column/\n * Column chart\n *\n * @extends plotOptions.line\n * @excluding connectEnds, connectNulls, gapSize, gapUnit, linecap,\n * lineWidth, marker, step, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.column\n */\n const ColumnSeriesDefaults = {\n /**\n * The corner radius of the border surrounding each column or bar. A number\n * signifies pixels. A percentage string, like for example `50%`, signifies\n * a relative size. For columns this is relative to the column width, for\n * pies it is relative to the radius and the inner radius.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderradius/\n * Rounded columns\n * @sample highcharts/plotoptions/series-border-radius\n * Column and pie with rounded border\n *\n * @type {number|string|Highcharts.BorderRadiusOptionsObject}\n * @product highcharts highstock gantt\n */\n borderRadius: 3,\n /**\n * When using automatic point colors pulled from the global\n * [colors](colors) or series-specific\n * [plotOptions.column.colors](series.colors) collections, this option\n * determines whether the chart should receive one color per series or\n * one color per point.\n *\n * In styled mode, the `colors` or `series.colors` arrays are not\n * supported, and instead this option gives the points individual color\n * class names on the form `highcharts-color-{n}`.\n *\n * @see [series colors](#plotOptions.column.colors)\n *\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @since 2.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colorByPoint\n */\n /**\n * A series specific or series type specific color set to apply instead\n * of the global [colors](#colors) when [colorByPoint](\n * #plotOptions.column.colorByPoint) is true.\n *\n * @type {Array}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colors\n */\n /**\n * When `true`, the columns will center in the category, ignoring null\n * or missing points. When `false`, space will be reserved for null or\n * missing points.\n *\n * @sample {highcharts} highcharts/series-column/centerincategory/\n * Center in category\n *\n * @since 8.0.1\n * @product highcharts highstock gantt\n */\n centerInCategory: false,\n /**\n * Padding between each value groups, in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-default/\n * 0.2 by default\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-none/\n * No group padding - all columns are evenly spaced\n *\n * @product highcharts highstock gantt\n */\n groupPadding: 0.2,\n /**\n * Whether to group non-stacked columns or to let them render\n * independent of each other. Non-grouped columns will be laid out\n * individually and overlap each other.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n * @sample {highstock} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.grouping\n */\n /** @ignore-option */\n marker: null,\n /**\n * The maximum allowed pixel width for a column, translated to the\n * height of a bar in a bar chart. This prevents the columns from\n * becoming too wide when there is a small number of points in the\n * chart.\n *\n * @see [pointWidth](#plotOptions.column.pointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n * @sample {highstock} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n *\n * @type {number}\n * @since 4.1.8\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.maxPointWidth\n */\n /**\n * Padding between each column or bar, in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-default/\n * 0.1 by default\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-025/\n * 0.25\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/\n * 0 for tightly packed columns\n *\n * @product highcharts highstock gantt\n */\n pointPadding: 0.1,\n /**\n * A pixel value specifying a fixed width for each column or bar point.\n * When set to `undefined`, the width is calculated from the\n * `pointPadding` and `groupPadding`. The width effects the dimension\n * that is not based on the point value. For column series it is the\n * hoizontal length and for bar series it is the vertical length.\n *\n * @see [maxPointWidth](#plotOptions.column.maxPointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointwidth-20/\n * 20px wide columns regardless of chart width or the amount of\n * data points\n *\n * @type {number}\n * @since 1.2.5\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.pointWidth\n */\n /**\n * A pixel value specifying a fixed width for the column or bar.\n * Overrides pointWidth on the series.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @default undefined\n * @since 7.0.0\n * @product highcharts highstock gantt\n * @apioption series.column.data.pointWidth\n */\n /**\n * The minimal height for a column or width for a bar. By default,\n * 0 values are not shown. To visualize a 0 (or close to zero) point,\n * set the minimal point length to a pixel value like 3\\. In stacked\n * column charts, minPointLength might not be respected for tightly\n * packed values.\n *\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength/\n * Zero base value\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength-pos-and-neg/\n * Positive and negative close to zero values\n *\n * @product highcharts highstock gantt\n */\n minPointLength: 0,\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, event if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @product highcharts highstock gantt\n */\n cropThreshold: 50,\n /**\n * The X axis range that each point is valid for. This determines the\n * width of the column. On a categorized axis, the range will be 1\n * by default (one category unit). On linear and datetime axes, the\n * range will be computed as the distance between the two closest data\n * points.\n *\n * The default `null` means it is computed automatically, but this\n * option can be used to override the automatic value.\n *\n * This option is set by default to 1 if data sorting is enabled.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointrange/\n * Set the point range to one day on a data set with one week\n * between the points\n *\n * @type {number|null}\n * @since 2.3\n * @product highcharts highstock gantt\n */\n pointRange: null,\n states: {\n /**\n * Options for the hovered point. These settings override the normal\n * state options when a point is moused over or touched.\n *\n * @extends plotOptions.series.states.hover\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock gantt\n */\n hover: {\n /** @ignore-option */\n halo: false,\n /**\n * A specific border color for the hovered point. Defaults to\n * inherit the normal state border color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.borderColor\n */\n /**\n * A specific color for the hovered point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.color\n */\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightening is by default replaced\n * with a fill-opacity set in the `.highcharts-point:hover`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-states-hover-brightness/\n * Brighten by 0.5\n *\n * @product highcharts highstock gantt\n */\n brightness: 0.1\n },\n /**\n * Options for the selected point. These settings override the\n * normal state options when a point is selected.\n *\n * @extends plotOptions.series.states.select\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock gantt\n */\n select: {\n /**\n * A specific color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @product highcharts highstock gantt\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * A specific border color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highcharts highstock gantt\n */\n borderColor: \"#000000\" /* Palette.neutralColor100 */\n }\n },\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @type {number}\n */\n y: void 0\n },\n // false doesn't work well: https://jsfiddle.net/highcharts/hz8fopan/14/\n /** @ignore-option */\n startFromThreshold: true,\n stickyTracking: false,\n tooltip: {\n distance: 6\n },\n /**\n * The Y axis value to serve as the base for the columns, for\n * distinguishing between values above and below a threshold. If `null`,\n * the columns extend from the padding Y axis minimum.\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts\n */\n threshold: 0,\n /**\n * The width of the border surrounding each column or bar. Defaults to\n * `1` when there is room for a border, but to `0` when the columns are\n * so dense that a border would cover the next column.\n *\n * In styled mode, the stroke width can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @default undefined\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.borderWidth\n */\n /**\n * The color of the border surrounding each column or bar.\n *\n * In styled mode, the border stroke can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highstock gantt\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */\n };\n /**\n * A `column` series. If the [type](#series.column.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.column\n * @excluding connectNulls, dataParser, dataURL, gapSize, gapUnit, linecap,\n * lineWidth, marker, connectEnds, step\n * @product highcharts highstock\n * @apioption series.column\n */\n /**\n * An array of data points for the series. For the `column` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 6],\n * [1, 2],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.column.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.column.data\n */\n /**\n * The color of the border surrounding the column or bar.\n *\n * In styled mode, the border stroke can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption series.column.data.borderColor\n */\n /**\n * The width of the border surrounding the column or bar.\n *\n * In styled mode, the stroke width can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.column.data.borderWidth\n */\n /**\n * A name for the dash style to use for the column or bar. Overrides\n * dashStyle on the series.\n *\n * In styled mode, the stroke dash-array can be set with the same classes as\n * listed under [data.color](#series.column.data.color).\n *\n * @see [series.pointWidth](#plotOptions.column.dashStyle)\n *\n * @type {Highcharts.DashStyleValue}\n * @apioption series.column.data.dashStyle\n */\n /**\n * A pixel value specifying a fixed width for the column or bar. Overrides\n * pointWidth on the series. The width effects the dimension that is not based\n * on the point value.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @apioption series.column.data.pointWidth\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.hover\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.select\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Series/Column/ColumnSeriesDefaults.js'], _modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (A, Color, ColumnSeriesDefaults, H, Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { animObject } = A;\n const { parse: color } = Color;\n const { hasTouch, noop } = H;\n const { clamp, defined, extend, fireEvent, isArray, isNumber, merge, pick, objectEach, relativeLength } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * The column series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.column\n *\n * @augments Highcharts.Series\n */\n class ColumnSeries extends Series {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n super(...arguments);\n /* *\n *\n * Properties\n *\n * */\n this.borderWidth = void 0;\n this.data = void 0;\n this.group = void 0;\n this.options = void 0;\n this.points = void 0;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animate the column heights one by one from zero.\n *\n * @private\n * @function Highcharts.seriesTypes.column#animate\n *\n * @param {boolean} init\n * Whether to initialize the animation or run it\n */\n animate(init) {\n const series = this, yAxis = this.yAxis, yAxisPos = yAxis.pos, options = series.options, inverted = this.chart.inverted, attr = {}, translateProp = inverted ?\n 'translateX' :\n 'translateY';\n let translateStart, translatedThreshold;\n if (init) {\n attr.scaleY = 0.001;\n translatedThreshold = clamp(yAxis.toPixels(options.threshold), yAxisPos, yAxisPos + yAxis.len);\n if (inverted) {\n attr.translateX = translatedThreshold - yAxis.len;\n }\n else {\n attr.translateY = translatedThreshold;\n }\n // apply finnal clipping (used in Highcharts Stock) (#7083)\n // animation is done by scaleY, so cliping is for panes\n if (series.clipBox) {\n series.setClip();\n }\n series.group.attr(attr);\n }\n else { // run the animation\n translateStart = Number(series.group.attr(translateProp));\n series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {\n // Do the scale synchronously to ensure smooth\n // updating (#5030, #7228)\n step: function (val, fx) {\n if (series.group) {\n attr[translateProp] = translateStart +\n fx.pos * (yAxisPos - translateStart);\n series.group.attr(attr);\n }\n }\n }));\n }\n }\n /**\n * Initialize the series. Extends the basic Series.init method by\n * marking other series of the same type as dirty.\n *\n * @private\n * @function Highcharts.seriesTypes.column#init\n */\n init(chart, options) {\n super.init.apply(this, arguments);\n const series = this;\n chart = series.chart;\n // if the series is added dynamically, force redraw of other\n // series affected by a new column\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n }\n /**\n * Return the width and x offset of the columns adjusted for grouping,\n * groupPadding, pointPadding, pointWidth etc.\n *\n * @private\n * @function Highcharts.seriesTypes.column#getColumnMetrics\n */\n getColumnMetrics() {\n const series = this, options = series.options, xAxis = series.xAxis, yAxis = series.yAxis, reversedStacks = xAxis.options.reversedStacks, \n // Keep backward compatibility: reversed xAxis had reversed\n // stacks\n reverseStacks = (xAxis.reversed && !reversedStacks) ||\n (!xAxis.reversed && reversedStacks), stackGroups = {};\n let stackKey, columnCount = 0;\n // Get the total number of column type series. This is called on\n // every series. Consider moving this logic to a chart.orderStacks()\n // function and call it on init, addSeries and removeSeries\n if (options.grouping === false) {\n columnCount = 1;\n }\n else {\n series.chart.series.forEach(function (otherSeries) {\n const otherYAxis = otherSeries.yAxis, otherOptions = otherSeries.options;\n let columnIndex;\n if (otherSeries.type === series.type &&\n (otherSeries.visible ||\n !series.chart.options.chart.ignoreHiddenSeries) &&\n yAxis.len === otherYAxis.len &&\n yAxis.pos === otherYAxis.pos) { // #642, #2086\n if (otherOptions.stacking &&\n otherOptions.stacking !== 'group') {\n stackKey = otherSeries.stackKey;\n if (typeof stackGroups[stackKey] ===\n 'undefined') {\n stackGroups[stackKey] = columnCount++;\n }\n columnIndex = stackGroups[stackKey];\n }\n else if (otherOptions.grouping !== false) { // #1162\n columnIndex = columnCount++;\n }\n otherSeries.columnIndex = columnIndex;\n }\n });\n }\n const categoryWidth = Math.min(Math.abs(xAxis.transA) * ((xAxis.ordinal && xAxis.ordinal.slope) ||\n options.pointRange ||\n xAxis.closestPointRange ||\n xAxis.tickInterval ||\n 1), // #2610\n xAxis.len // #1535\n ), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len, pick(options.pointWidth, pointOffsetWidth * (1 - 2 * options.pointPadding))), pointPadding = (pointOffsetWidth - pointWidth) / 2, \n // #1251, #3737\n colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +\n (groupPadding +\n colIndex * pointOffsetWidth -\n (categoryWidth / 2)) * (reverseStacks ? -1 : 1);\n // Save it for reading in linked series (Error bars particularly)\n series.columnMetrics = {\n width: pointWidth,\n offset: pointXOffset,\n paddedWidth: pointOffsetWidth,\n columnCount\n };\n return series.columnMetrics;\n }\n /**\n * Make the columns crisp. The edges are rounded to the nearest full\n * pixel.\n *\n * @private\n * @function Highcharts.seriesTypes.column#crispCol\n */\n crispCol(x, y, w, h) {\n const chart = this.chart, borderWidth = this.borderWidth, xCrisp = -(borderWidth % 2 ? 0.5 : 0);\n let right, yCrisp = borderWidth % 2 ? 0.5 : 1;\n // Horizontal. We need to first compute the exact right edge, then\n // round it and compute the width from there.\n if (this.options.crisp) {\n right = Math.round(x + w) + xCrisp;\n x = Math.round(x) + xCrisp;\n w = right - x;\n }\n // Vertical\n const bottom = Math.round(y + h) + yCrisp, fromTop = Math.abs(y) <= 0.5 && bottom > 0.5; // #4504, #4656\n y = Math.round(y) + yCrisp;\n h = bottom - y;\n // Top edges are exceptions\n if (fromTop && h) { // #5146\n y -= 1;\n h += 1;\n }\n return {\n x: x,\n y: y,\n width: w,\n height: h\n };\n }\n /**\n * Adjust for missing columns, according to the `centerInCategory`\n * option. Missing columns are either single points or stacks where the\n * point or points are either missing or null.\n *\n * @private\n * @function Highcharts.seriesTypes.column#adjustForMissingColumns\n * @param {number} x\n * The x coordinate of the column, left side\n *\n * @param {number} pointWidth\n * The pointWidth, already computed upstream\n *\n * @param {Highcharts.ColumnPoint} point\n * The point instance\n *\n * @param {Highcharts.ColumnMetricsObject} metrics\n * The series-wide column metrics\n *\n * @return {number}\n * The adjusted x position, or the original if not adjusted\n */\n adjustForMissingColumns(x, pointWidth, point, metrics) {\n const stacking = this.options.stacking;\n if (!point.isNull && metrics.columnCount > 1) {\n const reversedStacks = this.yAxis.options.reversedStacks;\n let indexInCategory = 0, totalInCategory = reversedStacks ? 0 : -metrics.columnCount;\n // Loop over all the stacks on the Y axis. When stacking is enabled,\n // these are real point stacks. When stacking is not enabled, but\n // `centerInCategory` is true, there is one stack handling the\n // grouping of points in each category. This is done in the\n // `setGroupedPoints` function.\n objectEach(this.yAxis.stacking && this.yAxis.stacking.stacks, (stack) => {\n if (typeof point.x === 'number') {\n const stackItem = stack[point.x.toString()];\n if (stackItem) {\n const pointValues = stackItem.points[this.index];\n // If true `stacking` is enabled, count the total\n // number of non-null stacks in the category, and\n // note which index this point is within those\n // stacks.\n if (stacking) {\n if (pointValues) {\n indexInCategory = totalInCategory;\n }\n if (stackItem.hasValidPoints) {\n reversedStacks ? // #16169\n totalInCategory++ : totalInCategory--;\n }\n // If `stacking` is not enabled, look for the index\n }\n else if (isArray(pointValues)) {\n // If there are multiple points with the same X\n // then gather all series in category, and\n // assign index\n let seriesIndexes = Object\n .keys(stackItem.points)\n .filter((pointKey) => \n // Filter out duplicate X's\n !pointKey.match(',') &&\n // Filter out null points\n stackItem.points[pointKey] &&\n stackItem.points[pointKey].length > 1)\n .map(parseFloat)\n .sort((a, b) => b - a);\n indexInCategory = seriesIndexes.indexOf(this.index);\n totalInCategory = seriesIndexes.length;\n }\n }\n }\n });\n // Compute the adjusted x position\n const boxWidth = (totalInCategory - 1) * metrics.paddedWidth +\n pointWidth;\n x = (point.plotX || 0) + boxWidth / 2 - pointWidth -\n indexInCategory * metrics.paddedWidth;\n }\n return x;\n }\n /**\n * Translate each point to the plot area coordinate system and find\n * shape positions\n *\n * @private\n * @function Highcharts.seriesTypes.column#translate\n */\n translate() {\n const series = this, chart = series.chart, options = series.options, dense = series.dense =\n series.closestPointRange * series.xAxis.transA < 2, borderWidth = series.borderWidth = pick(options.borderWidth, dense ? 0 : 1 // #3635\n ), xAxis = series.xAxis, yAxis = series.yAxis, threshold = options.threshold, minPointLength = pick(options.minPointLength, 5), metrics = series.getColumnMetrics(), seriesPointWidth = metrics.width, seriesXOffset = series.pointXOffset = metrics.offset, dataMin = series.dataMin, dataMax = series.dataMax;\n // postprocessed for border width\n let seriesBarW = series.barW =\n Math.max(seriesPointWidth, 1 + 2 * borderWidth), translatedThreshold = series.translatedThreshold =\n yAxis.getThreshold(threshold);\n if (chart.inverted) {\n translatedThreshold -= 0.5; // #3355\n }\n // When the pointPadding is 0, we want the columns to be packed\n // tightly, so we allow individual columns to have individual sizes.\n // When pointPadding is greater, we strive for equal-width columns\n // (#2694).\n if (options.pointPadding) {\n seriesBarW = Math.ceil(seriesBarW);\n }\n Series.prototype.translate.apply(series);\n // Record the new values\n series.points.forEach(function (point) {\n const yBottom = pick(point.yBottom, translatedThreshold), safeDistance = 999 + Math.abs(yBottom), plotX = point.plotX || 0, \n // Don't draw too far outside plot area (#1303, #2241,\n // #4264)\n plotY = clamp(point.plotY, -safeDistance, yAxis.len + safeDistance), stackBox = point.stackBox;\n let up, barY = Math.min(plotY, yBottom), barH = Math.max(plotY, yBottom) - barY, pointWidth = seriesPointWidth, barX = plotX + seriesXOffset, barW = seriesBarW;\n // Handle options.minPointLength\n if (minPointLength && Math.abs(barH) < minPointLength) {\n barH = minPointLength;\n up = (!yAxis.reversed && !point.negative) ||\n (yAxis.reversed && point.negative);\n // Reverse zeros if there's no positive value in the series\n // in visible range (#7046)\n if (isNumber(threshold) &&\n isNumber(dataMax) &&\n point.y === threshold &&\n dataMax <= threshold &&\n // and if there's room for it (#7311)\n (yAxis.min || 0) < threshold &&\n // if all points are the same value (i.e zero) not draw\n // as negative points (#10646), but only if there's room\n // for it (#14876)\n (dataMin !== dataMax || (yAxis.max || 0) <= threshold)) {\n up = !up;\n }\n // If stacked...\n barY = (Math.abs(barY - translatedThreshold) > minPointLength ?\n // ...keep position\n yBottom - minPointLength :\n // #1485, #4051\n translatedThreshold -\n (up ? minPointLength : 0));\n }\n // Handle point.options.pointWidth\n // @todo Handle grouping/stacking too. Calculate offset properly\n if (defined(point.options.pointWidth)) {\n pointWidth = barW =\n Math.ceil(point.options.pointWidth);\n barX -= Math.round((pointWidth - seriesPointWidth) / 2);\n }\n // Adjust for null or missing points\n if (options.centerInCategory) {\n barX = series.adjustForMissingColumns(barX, pointWidth, point, metrics);\n }\n // Cache for access in polar\n point.barX = barX;\n point.pointWidth = pointWidth;\n // Fix the tooltip on center of grouped columns (#1216, #424,\n // #3648)\n point.tooltipPos = chart.inverted ?\n [\n clamp(yAxis.len + yAxis.pos - chart.plotLeft - plotY, yAxis.pos - chart.plotLeft, yAxis.len + yAxis.pos - chart.plotLeft),\n xAxis.len + xAxis.pos - chart.plotTop - barX - barW / 2,\n barH\n ] :\n [\n xAxis.left - chart.plotLeft + barX + barW / 2,\n clamp(plotY + yAxis.pos -\n chart.plotTop, yAxis.pos - chart.plotTop, yAxis.len + yAxis.pos - chart.plotTop),\n barH\n ];\n // Register shape type and arguments to be used in drawPoints. Allow\n // `shapeType` defined on `pointClass` level.\n point.shapeType = series.pointClass.prototype.shapeType ||\n 'roundedRect';\n point.shapeArgs = series.crispCol(barX, \n // #3169, drilldown from null must have a position to work from.\n // #6585, dataLabel should be placed on xAxis, not floating in\n // the middle of the chart.\n point.isNull ? translatedThreshold : barY, barW, point.isNull ? 0 : barH);\n });\n // Fire a specific event after column translate. We could instead apply\n // all the column logic in an `afterTranslate` event handler, but there\n // are so many other series types that use the column translation, that\n // it is more convenient to have a specific event for it.\n fireEvent(this, 'afterColumnTranslate');\n }\n /**\n * Columns have no graph\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawGraph\n */\n drawGraph() {\n this.group[this.dense ? 'addClass' : 'removeClass']('highcharts-dense-data');\n }\n /**\n * Get presentational attributes\n *\n * @private\n * @function Highcharts.seriesTypes.column#pointAttribs\n */\n pointAttribs(point, state) {\n const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';\n let stateOptions, zone, brightness, fill = (point && point.color) || this.color, \n // set to fill when borderColor null:\n stroke = ((point && point[strokeOption]) ||\n options[strokeOption] ||\n fill), dashstyle = (point && point.options.dashStyle) || options.dashStyle, strokeWidth = (point && point[strokeWidthOption]) ||\n options[strokeWidthOption] ||\n this[strokeWidthOption] || 0, opacity = pick(point && point.opacity, options.opacity, 1);\n // Handle zone colors\n if (point && this.zones.length) {\n zone = point.getZone();\n // When zones are present, don't use point.color (#4267).\n // Changed order (#6527), added support for colorAxis (#10670)\n fill = (point.options.color ||\n (zone && (zone.color || point.nonZonedColor)) ||\n this.color);\n if (zone) {\n stroke = zone.borderColor || stroke;\n dashstyle = zone.dashStyle || dashstyle;\n strokeWidth = zone.borderWidth || strokeWidth;\n }\n }\n // Select or hover states\n if (state && point) {\n stateOptions = merge(options.states[state], \n // #6401\n point.options.states &&\n point.options.states[state] ||\n {});\n brightness = stateOptions.brightness;\n fill =\n stateOptions.color || (typeof brightness !== 'undefined' &&\n color(fill)\n .brighten(stateOptions.brightness)\n .get()) || fill;\n stroke = stateOptions[strokeOption] || stroke;\n strokeWidth =\n stateOptions[strokeWidthOption] || strokeWidth;\n dashstyle = stateOptions.dashStyle || dashstyle;\n opacity = pick(stateOptions.opacity, opacity);\n }\n const ret = {\n fill: fill,\n stroke: stroke,\n 'stroke-width': strokeWidth,\n opacity: opacity\n };\n if (dashstyle) {\n ret.dashstyle = dashstyle;\n }\n return ret;\n }\n /**\n * Draw the columns. For bars, the series.group is rotated, so the same\n * coordinates apply for columns and bars. This method is inherited by\n * scatter series.\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawPoints\n */\n drawPoints(points = this.points) {\n const series = this, chart = this.chart, options = series.options, renderer = chart.renderer, animationLimit = options.animationLimit || 250;\n let shapeArgs;\n // draw the columns\n points.forEach(function (point) {\n const plotY = point.plotY;\n let graphic = point.graphic, hasGraphic = !!graphic, verb = graphic && chart.pointCount < animationLimit ?\n 'animate' : 'attr';\n if (isNumber(plotY) && point.y !== null) {\n shapeArgs = point.shapeArgs;\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (graphic && point.hasNewShapeType()) {\n graphic = graphic.destroy();\n }\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = series.xAxis.reversed ?\n -(shapeArgs ? (shapeArgs.width || 0) : 0) :\n series.xAxis.width;\n }\n if (!graphic) {\n point.graphic = graphic =\n renderer[point.shapeType](shapeArgs)\n .add(point.group || series.group);\n if (graphic &&\n series.enabledDataSorting &&\n chart.hasRendered &&\n chart.pointCount < animationLimit) {\n graphic.attr({\n x: point.startXPos\n });\n hasGraphic = true;\n verb = 'animate';\n }\n }\n if (graphic && hasGraphic) { // update\n graphic[verb](merge(shapeArgs));\n }\n // Presentational\n if (!chart.styledMode) {\n graphic[verb](series.pointAttribs(point, (point.selected && 'select')))\n .shadow(point.allowShadow !== false && options.shadow);\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n });\n }\n /**\n * Draw the tracker for a point.\n * @private\n */\n drawTracker(points = this.points) {\n const series = this, chart = series.chart, pointer = chart.pointer, onMouseOver = function (e) {\n const point = pointer.getPointFromEvent(e);\n // undefined on graph in scatterchart\n if (typeof point !== 'undefined') {\n pointer.isDirectTouch = true;\n point.onMouseOver(e);\n }\n };\n let dataLabels;\n // Add reference to the point\n points.forEach(function (point) {\n dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n if (point.graphic) {\n point.graphic.element.point = point;\n }\n dataLabels.forEach(function (dataLabel) {\n if (dataLabel.div) {\n dataLabel.div.point = point;\n }\n else {\n dataLabel.element.point = point;\n }\n });\n });\n // Add the event listeners, we need to do this only once\n if (!series._hasTracking) {\n series.trackerGroups.forEach(function (key) {\n if (series[key]) {\n // we don't always have dataLabelsGroup\n series[key]\n .addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (hasTouch) {\n series[key].on('touchstart', onMouseOver);\n }\n if (!chart.styledMode && series.options.cursor) {\n series[key]\n .css({ cursor: series.options.cursor });\n }\n }\n });\n series._hasTracking = true;\n }\n fireEvent(this, 'afterDrawTracker');\n }\n /**\n * Remove this series from the chart\n *\n * @private\n * @function Highcharts.seriesTypes.column#remove\n */\n remove() {\n const series = this, chart = series.chart;\n // column and bar series affects other series of the same type\n // as they are either stacked or grouped\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n Series.prototype.remove.apply(series, arguments);\n }\n }\n ColumnSeries.defaultOptions = merge(Series.defaultOptions, ColumnSeriesDefaults);\n extend(ColumnSeries.prototype, {\n cropShoulder: 0,\n // When tooltip is not shared, this series (and derivatives) requires\n // direct touch/hover. KD-tree does not apply.\n directTouch: true,\n getSymbol: noop,\n // use separate negative stacks, unlike area stacks where a negative\n // point is substracted from previous (#1910)\n negStacks: true,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('column', ColumnSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Adjusted width and x offset of the columns for grouping.\n *\n * @private\n * @interface Highcharts.ColumnMetricsObject\n */ /**\n * Width of the columns.\n * @name Highcharts.ColumnMetricsObject#width\n * @type {number}\n */ /**\n * Offset of the columns.\n * @name Highcharts.ColumnMetricsObject#offset\n * @type {number}\n */\n ''; // detach doclets above\n\n return ColumnSeries;\n });\n _registerModule(_modules, 'Core/Series/DataLabel.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (A, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { getDeferredAnimation } = A;\n const { format } = F;\n const { defined, extend, fireEvent, isArray, isString, merge, objectEach, pick, splat } = U;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DataLabel;\n (function (DataLabel) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Align each individual data label.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n const series = this, chart = this.chart, inverted = this.isCartesian && chart.inverted, enabledDataSorting = this.enabledDataSorting, plotX = point.plotX, plotY = point.plotY, rotation = options.rotation, align = options.align, isInsidePlot = defined(plotX) &&\n defined(plotY) &&\n chart.isInsidePlot(plotX, Math.round(plotY), {\n inverted,\n paneCoordinates: true,\n series\n }), setStartPos = (alignOptions) => {\n if (enabledDataSorting && series.xAxis && !justify) {\n series.setDataLabelStartPos(point, dataLabel, isNew, isInsidePlot, alignOptions);\n }\n };\n let baseline, rotCorr, // rotation correction\n // Math.round for rounding errors (#2683), alignTo to allow column\n // labels (#2700)\n alignAttr, // the final position;\n justify = pick(options.overflow, (enabledDataSorting ? 'none' : 'justify')) === 'justify', visible = this.visible &&\n point.visible !== false &&\n defined(plotX) &&\n (point.series.forceDL ||\n (enabledDataSorting && !justify) ||\n isInsidePlot ||\n (\n // If the data label is inside the align box, it is\n // enough that parts of the align box is inside the\n // plot area (#12370). When stacking, it is always\n // inside regardless of the option (#15148).\n pick(options.inside, !!this.options.stacking) &&\n alignTo &&\n chart.isInsidePlot(plotX, inverted ?\n alignTo.x + 1 :\n alignTo.y + alignTo.height - 1, {\n inverted,\n paneCoordinates: true,\n series\n })));\n const pos = point.pos();\n if (visible && pos) {\n if (rotation) {\n dataLabel.attr({ align });\n }\n let bBox = dataLabel.getBBox(true), bBoxCorrection = [0, 0];\n baseline = chart.renderer.fontMetrics(dataLabel).b;\n // The alignment box is a singular point\n alignTo = extend({\n x: pos[0],\n y: Math.round(pos[1]),\n width: 0,\n height: 0\n }, alignTo);\n // Add the text size for alignment calculation\n extend(options, {\n width: bBox.width,\n height: bBox.height\n });\n // Allow a hook for changing alignment in the last moment, then do\n // the alignment\n if (rotation) {\n justify = false; // Not supported for rotated text\n rotCorr = chart.renderer.rotCorr(baseline, rotation); // #3723\n alignAttr = {\n x: (alignTo.x +\n (options.x || 0) +\n alignTo.width / 2 +\n rotCorr.x),\n y: (alignTo.y +\n (options.y || 0) +\n { top: 0, middle: 0.5, bottom: 1 }[options.verticalAlign] *\n alignTo.height)\n };\n bBoxCorrection = [\n bBox.x - Number(dataLabel.attr('x')),\n bBox.y - Number(dataLabel.attr('y'))\n ];\n setStartPos(alignAttr); // data sorting\n dataLabel[isNew ? 'attr' : 'animate'](alignAttr);\n }\n else {\n setStartPos(alignTo); // data sorting\n dataLabel.align(options, void 0, alignTo);\n alignAttr = dataLabel.alignAttr;\n }\n // Handle justify or crop\n if (justify && alignTo.height >= 0) { // #8830\n this.justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew);\n // Now check that the data label is within the plot area\n }\n else if (pick(options.crop, true)) {\n let { x, y } = alignAttr;\n x += bBoxCorrection[0];\n y += bBoxCorrection[1];\n // Uncomment this block to visualize the bounding boxes used for\n // determining visibility\n /*\n chart.renderer.rect(\n chart.plotLeft + alignAttr.x + bBox.x,\n chart.plotTop + alignAttr.y + bBox.y + 9999,\n bBox.width,\n bBox.height\n ).attr({\n stroke: 'rgba(0, 0, 0, 0.3)',\n 'stroke-width': 0.5\n }).add();\n chart.renderer.circle(\n chart.plotLeft + alignAttr.x,\n chart.plotTop + alignAttr.y,\n 2\n ).attr({\n fill: 'red',\n zIndex: 20\n }).add();\n // */\n visible =\n chart.isInsidePlot(x, y, {\n paneCoordinates: true,\n series\n }) &&\n chart.isInsidePlot(x + bBox.width, y + bBox.height, {\n paneCoordinates: true,\n series\n });\n }\n // When we're using a shape, make it possible with a connector or an\n // arrow pointing to thie point\n if (options.shape && !rotation) {\n dataLabel[isNew ? 'attr' : 'animate']({\n anchorX: pos[0],\n anchorY: pos[1]\n });\n }\n }\n // To use alignAttr property in hideOverlappingLabels\n if (isNew && enabledDataSorting) {\n dataLabel.placed = false;\n }\n // Show or hide based on the final aligned position\n if (!visible && (!enabledDataSorting || justify)) {\n dataLabel.hide();\n dataLabel.placed = false; // don't animate back in\n }\n else {\n dataLabel.show();\n }\n }\n /**\n * Handle the dataLabels.filter option.\n * @private\n */\n function applyFilter(point, options) {\n const filter = options.filter;\n if (filter) {\n const op = filter.operator;\n const prop = point[filter.property];\n const val = filter.value;\n if ((op === '>' && prop > val) ||\n (op === '<' && prop < val) ||\n (op === '>=' && prop >= val) ||\n (op === '<=' && prop <= val) ||\n (op === '==' && prop == val) || // eslint-disable-line eqeqeq\n (op === '===' && prop === val)) {\n return true;\n }\n return false;\n }\n return true;\n }\n /**\n * @private\n */\n function compose(SeriesClass) {\n if (U.pushUnique(composedMembers, SeriesClass)) {\n const seriesProto = SeriesClass.prototype;\n seriesProto.initDataLabelsGroup = initDataLabelsGroup;\n seriesProto.initDataLabels = initDataLabels;\n seriesProto.alignDataLabel = alignDataLabel;\n seriesProto.drawDataLabels = drawDataLabels;\n seriesProto.justifyDataLabel = justifyDataLabel;\n seriesProto.setDataLabelStartPos = setDataLabelStartPos;\n }\n }\n DataLabel.compose = compose;\n /**\n * Create the SVGElement group for dataLabels\n * @private\n */\n function initDataLabelsGroup() {\n return this.plotGroup('dataLabelsGroup', 'data-labels', this.hasRendered ? 'inherit' : 'hidden', // #5133, #10220\n this.options.dataLabels.zIndex || 6);\n }\n /**\n * Init the data labels with the correct animation\n * @private\n */\n function initDataLabels(animationConfig) {\n const series = this, hasRendered = series.hasRendered || 0;\n // Create a separate group for the data labels to avoid rotation\n const dataLabelsGroup = this.initDataLabelsGroup()\n .attr({ opacity: +hasRendered }); // #3300\n if (!hasRendered && dataLabelsGroup) {\n if (series.visible) { // #2597, #3023, #3024\n dataLabelsGroup.show();\n }\n if (series.options.animation) {\n dataLabelsGroup.animate({ opacity: 1 }, animationConfig);\n }\n else {\n dataLabelsGroup.attr({ opacity: 1 });\n }\n }\n return dataLabelsGroup;\n }\n /**\n * Draw the data labels\n * @private\n */\n function drawDataLabels(points = this.points) {\n const series = this, chart = series.chart, seriesOptions = series.options, renderer = chart.renderer, { backgroundColor, plotBackgroundColor } = chart.options.chart, contrastColor = renderer.getContrast((isString(plotBackgroundColor) && plotBackgroundColor) ||\n (isString(backgroundColor) && backgroundColor) ||\n \"#000000\" /* Palette.neutralColor100 */);\n let seriesDlOptions = seriesOptions.dataLabels, pointOptions, dataLabelsGroup;\n const firstDLOptions = splat(seriesDlOptions)[0], dataLabelAnim = firstDLOptions.animation, animationConfig = firstDLOptions.defer ?\n getDeferredAnimation(chart, dataLabelAnim, series) :\n { defer: 0, duration: 0 };\n // Merge in plotOptions.dataLabels for series\n seriesDlOptions = mergeArrays(mergeArrays(chart.options.plotOptions &&\n chart.options.plotOptions.series &&\n chart.options.plotOptions.series.dataLabels, chart.options.plotOptions &&\n chart.options.plotOptions[series.type] &&\n chart.options.plotOptions[series.type].dataLabels), seriesDlOptions);\n fireEvent(this, 'drawDataLabels');\n if (isArray(seriesDlOptions) ||\n seriesDlOptions.enabled ||\n series._hasPointLabels) {\n dataLabelsGroup = this.initDataLabels(animationConfig);\n // Make the labels for each point\n points.forEach((point) => {\n // Merge in series options for the point.\n // @note dataLabelAttribs (like pointAttribs) would eradicate\n // the need for dlOptions, and simplify the section below.\n pointOptions = splat(mergeArrays(seriesDlOptions, \n // dlOptions is used in treemaps\n (point.dlOptions ||\n (point.options && point.options.dataLabels))));\n // Handle each individual data label for this point\n pointOptions.forEach((labelOptions, i) => {\n // Options for one datalabel\n const labelEnabled = (labelOptions.enabled &&\n // #2282, #4641, #7112, #10049\n (!point.isNull || point.dataLabelOnNull) &&\n applyFilter(point, labelOptions)), connector = point.connectors ?\n point.connectors[i] :\n point.connector;\n let labelConfig, formatString, labelText, style, rotation, attr, dataLabel = point.dataLabels ?\n point.dataLabels[i] : point.dataLabel, isNew = !dataLabel;\n const labelDistance = pick(labelOptions.distance, point.labelDistance);\n if (labelEnabled) {\n // Create individual options structure that can be\n // extended without affecting others\n labelConfig = point.getLabelConfig();\n formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);\n labelText = defined(formatString) ?\n format(formatString, labelConfig, chart) :\n (labelOptions[point.formatPrefix + 'Formatter'] ||\n labelOptions.formatter).call(labelConfig, labelOptions);\n style = labelOptions.style;\n rotation = labelOptions.rotation;\n if (!chart.styledMode) {\n // Determine the color\n style.color = pick(labelOptions.color, style.color, series.color, \"#000000\" /* Palette.neutralColor100 */);\n // Get automated contrast color\n if (style.color === 'contrast') {\n point.contrastColor = renderer.getContrast((point.color || series.color));\n style.color = (!defined(labelDistance) &&\n labelOptions.inside) ||\n labelDistance < 0 ||\n !!seriesOptions.stacking ?\n point.contrastColor :\n contrastColor;\n }\n else {\n delete point.contrastColor;\n }\n if (seriesOptions.cursor) {\n style.cursor = seriesOptions.cursor;\n }\n }\n attr = {\n r: labelOptions.borderRadius || 0,\n rotation: rotation,\n padding: labelOptions.padding,\n zIndex: 1\n };\n if (!chart.styledMode) {\n const { backgroundColor, borderColor } = labelOptions;\n attr.fill = backgroundColor === 'auto' ?\n point.color :\n backgroundColor;\n attr.stroke = borderColor === 'auto' ?\n point.color :\n borderColor;\n attr['stroke-width'] = labelOptions.borderWidth;\n }\n // Remove unused attributes (#947)\n objectEach(attr, function (val, name) {\n if (typeof val === 'undefined') {\n delete attr[name];\n }\n });\n }\n // If the point is outside the plot area, destroy it. #678,\n // #820\n if (dataLabel && (!labelEnabled ||\n !defined(labelText) ||\n !!dataLabel.div !== !!labelOptions.useHTML ||\n (\n // Change from no rotation to rotation and\n // vice versa. Don't use defined() because\n // rotation = 0 means also rotation = undefined\n (!dataLabel.rotation ||\n !labelOptions.rotation) &&\n dataLabel.rotation !== labelOptions.rotation))) {\n isNew = true;\n point.dataLabel = dataLabel =\n point.dataLabel && point.dataLabel.destroy();\n if (point.dataLabels) {\n // Remove point.dataLabels if this was the last one\n if (point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n else {\n delete point.dataLabels[i];\n }\n }\n if (!i) {\n delete point.dataLabel;\n }\n if (connector) {\n point.connector = point.connector.destroy();\n if (point.connectors) {\n // Remove point.connectors if this was the last\n // one\n if (point.connectors.length === 1) {\n delete point.connectors;\n }\n else {\n delete point.connectors[i];\n }\n }\n }\n }\n // Individual labels are disabled if the are explicitly\n // disabled in the point options, or if they fall outside\n // the plot area.\n if (labelEnabled && defined(labelText)) {\n if (!dataLabel) {\n // Create new label element\n point.dataLabels = point.dataLabels || [];\n dataLabel = point.dataLabels[i] = rotation ?\n // Labels don't rotate, use text element\n renderer.text(labelText, 0, 0, labelOptions.useHTML)\n .addClass('highcharts-data-label') :\n // We can use label\n renderer.label(labelText, 0, 0, labelOptions.shape, null, null, labelOptions.useHTML, null, 'data-label');\n // Store for backwards compatibility\n if (!i) {\n point.dataLabel = dataLabel;\n }\n dataLabel.addClass(' highcharts-data-label-color-' +\n point.colorIndex +\n ' ' + (labelOptions.className || '') +\n ( // #3398\n labelOptions.useHTML ?\n ' highcharts-tracker' :\n ''));\n }\n else {\n // Use old element and just update text\n attr.text = labelText;\n }\n // Store data label options for later access\n dataLabel.options = labelOptions;\n dataLabel.attr(attr);\n if (!chart.styledMode) {\n // Styles must be applied before add in order to\n // read text bounding box\n dataLabel.css(style).shadow(labelOptions.shadow);\n }\n const textPathOptions = labelOptions[point.formatPrefix + 'TextPath'] ||\n labelOptions.textPath;\n if (textPathOptions && !labelOptions.useHTML) {\n dataLabel.setTextPath((point.getDataLabelPath &&\n point.getDataLabelPath(dataLabel)) || point.graphic, textPathOptions);\n if (point.dataLabelPath &&\n !textPathOptions.enabled) {\n // clean the DOM\n point.dataLabelPath = (point.dataLabelPath.destroy());\n }\n }\n if (!dataLabel.added) {\n dataLabel.add(dataLabelsGroup);\n }\n // Now the data label is created and placed at 0,0, so\n // we need to align it\n series.alignDataLabel(point, dataLabel, labelOptions, null, isNew);\n }\n else if (dataLabel) {\n dataLabel.hide();\n }\n });\n });\n }\n fireEvent(this, 'afterDrawDataLabels');\n }\n /**\n * If data labels fall partly outside the plot area, align them back in, in\n * a way that doesn't hide the point.\n * @private\n */\n function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {\n const chart = this.chart, align = options.align, verticalAlign = options.verticalAlign, padding = dataLabel.box ? 0 : (dataLabel.padding || 0);\n let { x = 0, y = 0 } = options, off, justified;\n // Off left\n off = (alignAttr.x || 0) + padding;\n if (off < 0) {\n if (align === 'right' && x >= 0) {\n options.align = 'left';\n options.inside = true;\n }\n else {\n x -= off;\n }\n justified = true;\n }\n // Off right\n off = (alignAttr.x || 0) + bBox.width - padding;\n if (off > chart.plotWidth) {\n if (align === 'left' && x <= 0) {\n options.align = 'right';\n options.inside = true;\n }\n else {\n x += chart.plotWidth - off;\n }\n justified = true;\n }\n // Off top\n off = alignAttr.y + padding;\n if (off < 0) {\n if (verticalAlign === 'bottom' && y >= 0) {\n options.verticalAlign = 'top';\n options.inside = true;\n }\n else {\n y -= off;\n }\n justified = true;\n }\n // Off bottom\n off = (alignAttr.y || 0) + bBox.height - padding;\n if (off > chart.plotHeight) {\n if (verticalAlign === 'top' && y <= 0) {\n options.verticalAlign = 'bottom';\n options.inside = true;\n }\n else {\n y += chart.plotHeight - off;\n }\n justified = true;\n }\n if (justified) {\n options.x = x;\n options.y = y;\n dataLabel.placed = !isNew;\n dataLabel.align(options, void 0, alignTo);\n }\n return justified;\n }\n /**\n * Merge two objects that can be arrays. If one of them is an array, the\n * other is merged into each element. If both are arrays, each element is\n * merged by index. If neither are arrays, we use normal merge.\n * @private\n */\n function mergeArrays(one, two) {\n let res = [], i;\n if (isArray(one) && !isArray(two)) {\n res = one.map(function (el) {\n return merge(el, two);\n });\n }\n else if (isArray(two) && !isArray(one)) {\n res = two.map(function (el) {\n return merge(one, el);\n });\n }\n else if (!isArray(one) && !isArray(two)) {\n res = merge(one, two);\n }\n else {\n i = Math.max(one.length, two.length);\n while (i--) {\n res[i] = merge(one[i], two[i]);\n }\n }\n return res;\n }\n /**\n * Set starting position for data label sorting animation.\n * @private\n */\n function setDataLabelStartPos(point, dataLabel, isNew, isInside, alignOptions) {\n const chart = this.chart, inverted = chart.inverted, xAxis = this.xAxis, reversed = xAxis.reversed, labelCenter = inverted ? dataLabel.height / 2 : dataLabel.width / 2, pointWidth = point.pointWidth, halfWidth = pointWidth ? pointWidth / 2 : 0;\n dataLabel.startXPos = inverted ?\n alignOptions.x :\n (reversed ?\n -labelCenter - halfWidth :\n xAxis.width - labelCenter + halfWidth);\n dataLabel.startYPos = inverted ?\n (reversed ?\n this.yAxis.height - labelCenter + halfWidth :\n -labelCenter - halfWidth) : alignOptions.y;\n // We need to handle visibility in case of sorting point outside plot\n // area\n if (!isInside) {\n dataLabel\n .attr({ opacity: 1 })\n .animate({ opacity: 0 }, void 0, dataLabel.hide);\n }\n else if (dataLabel.visibility === 'hidden') {\n dataLabel.show();\n dataLabel\n .attr({ opacity: 0 })\n .animate({ opacity: 1 });\n }\n // Save start position on first render, but do not change position\n if (!chart.hasRendered) {\n return;\n }\n // Set start position\n if (isNew) {\n dataLabel.attr({ x: dataLabel.startXPos, y: dataLabel.startYPos });\n }\n dataLabel.placed = true;\n }\n })(DataLabel || (DataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback JavaScript function to format the data label as a string. Note that\n * if a `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @callback Highcharts.DataLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.PointLabelObject} this\n * Data label context to format\n *\n * @param {Highcharts.DataLabelsOptions} options\n * [API options](/highcharts/plotOptions.series.dataLabels) of the data label\n *\n * @return {number|string|null|undefined}\n * Formatted data label text\n */\n /**\n * Values for handling data labels that flow outside the plot area.\n *\n * @typedef {\"allow\"|\"justify\"} Highcharts.DataLabelsOverflowValue\n */\n ''; // keeps doclets above in JS file\n\n return DataLabel;\n });\n _registerModule(_modules, 'Series/Column/ColumnDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { series: Series } = SeriesRegistry;\n const { merge, pick } = U;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Override the basic data label alignment by adjusting for the position of\n * the column.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n let inverted = this.chart.inverted, series = point.series, xLen = (series.xAxis ? series.xAxis.len : this.chart.plotSizeX) || 0, yLen = (series.yAxis ? series.yAxis.len : this.chart.plotSizeY) || 0, \n // data label box for alignment\n dlBox = point.dlBox || point.shapeArgs, below = pick(point.below, // range series\n point.plotY >\n pick(this.translatedThreshold, yLen)), \n // draw it inside the box?\n inside = pick(options.inside, !!this.options.stacking), overshoot;\n // Align to the column itself, or the top of it\n if (dlBox) { // Area range uses this method but not alignTo\n alignTo = merge(dlBox);\n if (alignTo.y < 0) {\n alignTo.height += alignTo.y;\n alignTo.y = 0;\n }\n // If parts of the box overshoots outside the plot area, modify the\n // box to center the label inside\n overshoot = alignTo.y + alignTo.height - yLen;\n if (overshoot > 0 && overshoot < alignTo.height) {\n alignTo.height -= overshoot;\n }\n if (inverted) {\n alignTo = {\n x: yLen - alignTo.y - alignTo.height,\n y: xLen - alignTo.x - alignTo.width,\n width: alignTo.height,\n height: alignTo.width\n };\n }\n // Compute the alignment box\n if (!inside) {\n if (inverted) {\n alignTo.x += below ? 0 : alignTo.width;\n alignTo.width = 0;\n }\n else {\n alignTo.y += below ? alignTo.height : 0;\n alignTo.height = 0;\n }\n }\n }\n // When alignment is undefined (typically columns and bars), display the\n // individual point below or above the point depending on the threshold\n options.align = pick(options.align, !inverted || inside ? 'center' : below ? 'right' : 'left');\n options.verticalAlign = pick(options.verticalAlign, inverted || inside ? 'middle' : below ? 'top' : 'bottom');\n // Call the parent method\n Series.prototype.alignDataLabel.call(this, point, dataLabel, options, alignTo, isNew);\n // If label was justified and we have contrast, set it:\n if (options.inside && point.contrastColor) {\n dataLabel.css({\n color: point.contrastColor\n });\n }\n }\n /** @private */\n function compose(ColumnSeriesClass) {\n DataLabel.compose(Series);\n if (U.pushUnique(composedMembers, ColumnSeriesClass)) {\n ColumnSeriesClass.prototype.alignDataLabel = alignDataLabel;\n }\n }\n ColumnDataLabel.compose = compose;\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Series/Bar/BarSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { extend, merge } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * Bar series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.bar\n *\n * @augments Highcharts.Series\n */\n class BarSeries extends ColumnSeries {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n super(...arguments);\n /* *\n *\n * Properties\n *\n * */\n this.data = void 0;\n this.options = void 0;\n this.points = void 0;\n }\n }\n /**\n * A bar series is a special type of column series where the columns are\n * horizontal.\n *\n * @sample highcharts/demo/bar-basic/\n * Bar chart\n *\n * @extends plotOptions.column\n * @product highcharts\n * @optionparent plotOptions.bar\n */\n BarSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n // nothing here yet\n });\n extend(BarSeries.prototype, {\n inverted: true\n });\n SeriesRegistry.registerSeriesType('bar', BarSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `bar` series. If the [type](#series.bar.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.bar\n * @excluding connectNulls, dashStyle, dataParser, dataURL, gapSize, gapUnit,\n * linecap, lineWidth, marker, connectEnds, step\n * @product highcharts\n * @apioption series.bar\n */\n /**\n * An array of data points for the series. For the `bar` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 5],\n * [1, 10],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.bar.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 10,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.column.data\n * @product highcharts\n * @apioption series.bar.data\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.hover\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.select\n */\n ''; // gets doclets above into transpilat\n\n return BarSeries;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A scatter plot uses cartesian coordinates to display values for two\n * variables for a set of data.\n *\n * @sample {highcharts} highcharts/demo/scatter/\n * Scatter plot\n *\n * @extends plotOptions.line\n * @excluding cropThreshold, pointPlacement, shadow, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.scatter\n */\n const ScatterSeriesDefaults = {\n /**\n * The width of the line connecting the data points.\n *\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-none/\n * 0 by default\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-1/\n * 1px\n *\n * @product highcharts highstock\n */\n lineWidth: 0,\n findNearestPointBy: 'xy',\n /**\n * Apply a jitter effect for the rendered markers. When plotting\n * discrete values, a little random noise may help telling the points\n * apart. The jitter setting applies a random displacement of up to `n`\n * axis units in either direction. So for example on a horizontal X\n * axis, setting the `jitter.x` to 0.24 will render the point in a\n * random position between 0.24 units to the left and 0.24 units to the\n * right of the true axis position. On a category axis, setting it to\n * 0.5 will fill up the bin and make the data appear continuous.\n *\n * When rendered on top of a box plot or a column series, a jitter value\n * of 0.24 will correspond to the underlying series' default\n * [groupPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.groupPadding)\n * and [pointPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.pointPadding)\n * settings.\n *\n * @sample {highcharts} highcharts/demo/scatter-jitter\n * Jitter on a scatter plot\n *\n * @sample {highcharts} highcharts/series-scatter/jitter-boxplot\n * Jittered scatter plot on top of a box plot\n *\n * @product highcharts highstock\n * @since 7.0.2\n */\n jitter: {\n /**\n * The maximal X offset for the random jitter effect.\n */\n x: 0,\n /**\n * The maximal Y offset for the random jitter effect.\n */\n y: 0\n },\n marker: {\n enabled: true // Overrides auto-enabling in line series (#3647)\n },\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series, or out of the plot area. When false, the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock highmaps\n * @apioption plotOptions.scatter.stickyTracking\n */\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip).\n * Overridable properties are `headerFormat`, `pointFormat`,\n * `yDecimals`, `xDateFormat`, `yPrefix` and `ySuffix`. Unlike other\n * series, in a scatter plot the series.name by default shows in the\n * headerFormat and point.x and point.y in the pointFormat.\n *\n * @product highcharts highstock highmaps\n */\n tooltip: {\n /**\n * @product highcharts highstock\n */\n headerFormat: '\\u25CF ' +\n ' {series.name}
',\n pointFormat: 'x: {point.x}
y: {point.y}
'\n }\n };\n /**\n * A `scatter` series. If the [type](#series.scatter.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.scatter\n * @excluding cropThreshold, dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.scatter\n */\n /**\n * An array of data points for the series. For the `scatter` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 0],\n * [1, 8],\n * [2, 9]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.scatter.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.scatter.data\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeries.js', [_modules['Series/Scatter/ScatterSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ScatterSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { column: ColumnSeries, line: LineSeries } = SeriesRegistry.seriesTypes;\n const { addEvent, extend, merge } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * Scatter series type.\n *\n * @private\n */\n class ScatterSeries extends LineSeries {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n super(...arguments);\n /* *\n *\n * Properties\n *\n * */\n this.data = void 0;\n this.options = void 0;\n this.points = void 0;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Optionally add the jitter effect.\n * @private\n */\n applyJitter() {\n const series = this, jitter = this.options.jitter, len = this.points.length;\n /**\n * Return a repeatable, pseudo-random number based on an integer\n * seed.\n * @private\n */\n function unrandom(seed) {\n const rand = Math.sin(seed) * 10000;\n return rand - Math.floor(rand);\n }\n if (jitter) {\n this.points.forEach(function (point, i) {\n ['x', 'y'].forEach(function (dim, j) {\n let axis, plotProp = 'plot' + dim.toUpperCase(), min, max, translatedJitter;\n if (jitter[dim] && !point.isNull) {\n axis = series[dim + 'Axis'];\n translatedJitter =\n jitter[dim] * axis.transA;\n if (axis && !axis.isLog) {\n // Identify the outer bounds of the jitter range\n min = Math.max(0, point[plotProp] - translatedJitter);\n max = Math.min(axis.len, point[plotProp] + translatedJitter);\n // Find a random position within this range\n point[plotProp] = min +\n (max - min) * unrandom(i + j * len);\n // Update clientX for the tooltip k-d-tree\n if (dim === 'x') {\n point.clientX = point.plotX;\n }\n }\n }\n });\n });\n }\n }\n /**\n * @private\n */\n drawGraph() {\n if (this.options.lineWidth) {\n super.drawGraph();\n }\n else if (this.graph) {\n this.graph = this.graph.destroy();\n }\n }\n }\n ScatterSeries.defaultOptions = merge(LineSeries.defaultOptions, ScatterSeriesDefaults);\n extend(ScatterSeries.prototype, {\n drawTracker: ColumnSeries.prototype.drawTracker,\n sorted: false,\n requireSorting: false,\n noSharedTooltip: true,\n trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n takeOrdinalPosition: false // #2342\n });\n /* *\n *\n * Events\n *\n * */\n /* eslint-disable no-invalid-this */\n addEvent(ScatterSeries, 'afterTranslate', function () {\n this.applyJitter();\n });\n SeriesRegistry.registerSeriesType('scatter', ScatterSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeries;\n });\n _registerModule(_modules, 'Series/CenteredUtilities.js', [_modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (H, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { deg2rad } = H;\n const { fireEvent, isNumber, pick, relativeLength } = U;\n /**\n * @private\n */\n var CenteredUtilities;\n (function (CenteredUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the center of the pie based on the size and center options relative\n * to the plot area. Borrowed by the polar and gauge series types.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getCenter\n */\n function getCenter() {\n const options = this.options, chart = this.chart, slicingRoom = 2 * (options.slicedOffset || 0), plotWidth = chart.plotWidth - 2 * slicingRoom, plotHeight = chart.plotHeight - 2 * slicingRoom, centerOption = options.center, smallestSize = Math.min(plotWidth, plotHeight), thickness = options.thickness;\n let handleSlicingRoom, size = options.size, innerSize = options.innerSize || 0, i, value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n const positions = [\n pick(centerOption[0], '50%'),\n pick(centerOption[1], '50%'),\n // Prevent from negative values\n pick(size && size < 0 ? void 0 : options.size, '100%'),\n pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')\n ];\n // No need for inner size in angular (gauges) series but still required\n // for pie series\n if (chart.angular && !(this instanceof Series)) {\n positions[3] = 0;\n }\n for (i = 0; i < 4; ++i) {\n value = positions[i];\n handleSlicingRoom = i < 2 || (i === 2 && /%$/.test(value));\n // i == 0: centerX, relative to width\n // i == 1: centerY, relative to height\n // i == 2: size, relative to smallestSize\n // i == 3: innerSize, relative to size\n positions[i] = relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);\n }\n // innerSize cannot be larger than size (#3632)\n if (positions[3] > positions[2]) {\n positions[3] = positions[2];\n }\n // thickness overrides innerSize, need to be less than pie size (#6647)\n if (isNumber(thickness) &&\n thickness * 2 < positions[2] && thickness > 0) {\n positions[3] = positions[2] - thickness * 2;\n }\n fireEvent(this, 'afterGetCenter', { positions });\n return positions;\n }\n CenteredUtilities.getCenter = getCenter;\n /**\n * getStartAndEndRadians - Calculates start and end angles in radians.\n * Used in series types such as pie and sunburst.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians\n *\n * @param {number} [start]\n * Start angle in degrees.\n *\n * @param {number} [end]\n * Start angle in degrees.\n *\n * @return {Highcharts.RadianAngles}\n * Returns an object containing start and end angles as radians.\n */\n function getStartAndEndRadians(start, end) {\n const startAngle = isNumber(start) ? start : 0, // must be a number\n endAngle = ((isNumber(end) && // must be a number\n end > startAngle && // must be larger than the start angle\n // difference must be less than 360 degrees\n (end - startAngle) < 360) ?\n end :\n startAngle + 360), correction = -90;\n return {\n start: deg2rad * (startAngle + correction),\n end: deg2rad * (endAngle + correction)\n };\n }\n CenteredUtilities.getStartAndEndRadians = getStartAndEndRadians;\n })(CenteredUtilities || (CenteredUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @private\n * @interface Highcharts.RadianAngles\n */ /**\n * @name Highcharts.RadianAngles#end\n * @type {number}\n */ /**\n * @name Highcharts.RadianAngles#start\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return CenteredUtilities;\n });\n _registerModule(_modules, 'Series/Pie/PiePoint.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (A, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { setAnimation } = A;\n const { addEvent, defined, extend, isNumber, pick, relativeLength } = U;\n /* *\n *\n * Class\n *\n * */\n class PiePoint extends Point {\n constructor() {\n /* *\n *\n * Properties\n *\n * */\n super(...arguments);\n this.labelDistance = void 0;\n this.options = void 0;\n this.series = void 0;\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extendable method for getting the path of the connector between the\n * data label and the pie slice.\n * @private\n */\n getConnectorPath() {\n const labelPosition = this.labelPosition, options = this.series.options.dataLabels, predefinedShapes = this.connectorShapes;\n let connectorShape = options.connectorShape;\n // find out whether to use the predefined shape\n if (predefinedShapes[connectorShape]) {\n connectorShape = predefinedShapes[connectorShape];\n }\n return connectorShape.call(this, {\n // pass simplified label position object for user's convenience\n x: labelPosition.computed.x,\n y: labelPosition.computed.y,\n alignment: labelPosition.alignment\n }, labelPosition.connectorPosition, options);\n }\n /**\n * @private\n */\n getTranslate() {\n return this.sliced ? this.slicedTranslation : {\n translateX: 0,\n translateY: 0\n };\n }\n /**\n * @private\n */\n haloPath(size) {\n const shapeArgs = this.shapeArgs;\n return this.sliced || !this.visible ?\n [] :\n this.series.chart.renderer.symbols.arc(shapeArgs.x, shapeArgs.y, shapeArgs.r + size, shapeArgs.r + size, {\n // Substract 1px to ensure the background is not bleeding\n // through between the halo and the slice (#7495).\n innerR: shapeArgs.r - 1,\n start: shapeArgs.start,\n end: shapeArgs.end,\n borderRadius: shapeArgs.borderRadius\n });\n }\n /**\n * Initialize the pie slice.\n * @private\n */\n init() {\n super.init.apply(this, arguments);\n this.name = pick(this.name, 'Slice');\n // add event listener for select\n const toggleSlice = (e) => {\n this.slice(e.type === 'select');\n };\n addEvent(this, 'select', toggleSlice);\n addEvent(this, 'unselect', toggleSlice);\n return this;\n }\n /**\n * Negative points are not valid (#1530, #3623, #5322)\n * @private\n */\n isValid() {\n return isNumber(this.y) && this.y >= 0;\n }\n /**\n * Toggle the visibility of a pie slice or other data point. Note that this\n * method is available only for some series, like pie, treemap and sunburst.\n *\n * @function Highcharts.Point#setVisible\n *\n * @param {boolean} [vis]\n * True to show the pie slice or other data point, false to hide. If\n * undefined, the visibility is toggled.\n *\n * @param {boolean} [redraw] Whether to redraw the chart after the point is\n * altered. If doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw|chart.redraw()} after.\n *\n */\n setVisible(vis, redraw) {\n const series = this.series, chart = series.chart, ignoreHiddenPoint = series.options.ignoreHiddenPoint;\n redraw = pick(redraw, ignoreHiddenPoint);\n if (vis !== this.visible) {\n // If called without an argument, toggle visibility\n this.visible = this.options.visible = vis =\n typeof vis === 'undefined' ? !this.visible : vis;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n // Show and hide associated elements. This is performed\n // regardless of redraw or not, because chart.redraw only\n // handles full series.\n ['graphic', 'dataLabel', 'connector'].forEach((key) => {\n if (this[key]) {\n this[key][vis ? 'show' : 'hide'](vis);\n }\n });\n if (this.legendItem) {\n chart.legend.colorizeItem(this, vis);\n }\n // #4170, hide halo after hiding point\n if (!vis && this.state === 'hover') {\n this.setState('');\n }\n // Handle ignore hidden slices\n if (ignoreHiddenPoint) {\n series.isDirty = true;\n }\n if (redraw) {\n chart.redraw();\n }\n }\n }\n /**\n * Set or toggle whether the slice is cut out from the pie.\n * @private\n *\n * @param {boolean} sliced\n * When undefined, the slice state is toggled.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart. True by default.\n *\n * @param {boolean|Partial} [animation]\n * Animation options.\n */\n slice(sliced, redraw, animation) {\n const series = this.series, chart = series.chart;\n setAnimation(animation, chart);\n // redraw is true by default\n redraw = pick(redraw, true);\n /**\n * Pie series only. Whether to display a slice offset from the\n * center.\n * @name Highcharts.Point#sliced\n * @type {boolean|undefined}\n */\n // if called without an argument, toggle\n this.sliced = this.options.sliced = sliced =\n defined(sliced) ? sliced : !this.sliced;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n if (this.graphic) {\n this.graphic.animate(this.getTranslate());\n }\n }\n }\n extend(PiePoint.prototype, {\n connectorShapes: {\n // only one available before v7.0.0\n fixedOffset: function (labelPosition, connectorPosition, options) {\n const breakAt = connectorPosition.breakAt, touchingSliceAt = connectorPosition.touchingSliceAt, lineSegment = options.softConnector ? [\n 'C',\n // 1st control point (of the curve)\n labelPosition.x +\n // 5 gives the connector a little horizontal bend\n (labelPosition.alignment === 'left' ? -5 : 5),\n labelPosition.y,\n 2 * breakAt.x - touchingSliceAt.x,\n 2 * breakAt.y - touchingSliceAt.y,\n breakAt.x,\n breakAt.y //\n ] : [\n 'L',\n breakAt.x,\n breakAt.y\n ];\n // assemble the path\n return ([\n ['M', labelPosition.x, labelPosition.y],\n lineSegment,\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ]);\n },\n straight: function (labelPosition, connectorPosition) {\n const touchingSliceAt = connectorPosition.touchingSliceAt;\n // direct line to the slice\n return [\n ['M', labelPosition.x, labelPosition.y],\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ];\n },\n crookedLine: function (labelPosition, connectorPosition, options) {\n const { breakAt, touchingSliceAt } = connectorPosition, { series } = this, [cx, cy, diameter] = series.center, r = diameter / 2, plotWidth = series.chart.plotWidth, plotLeft = series.chart.plotLeft, leftAligned = labelPosition.alignment === 'left', { x, y } = labelPosition;\n let crookX = breakAt.x;\n if (options.crookDistance) {\n const crookDistance = relativeLength(// % to fraction\n options.crookDistance, 1);\n crookX = leftAligned ?\n cx +\n r +\n (plotWidth + plotLeft - cx - r) * (1 - crookDistance) :\n plotLeft + (cx - r) * crookDistance;\n // When the crookDistance option is undefined, make the bend in the\n // intersection between the radial line in the middle of the slice,\n // and the extension of the label position.\n }\n else {\n crookX = cx + (cy - y) * Math.tan((this.angle || 0) - Math.PI / 2);\n }\n const path = [['M', x, y]];\n // The crookedLine formula doesn't make sense if the path overlaps\n // the label - use straight line instead in that case\n if (leftAligned ?\n (crookX <= x && crookX >= breakAt.x) :\n (crookX >= x && crookX <= breakAt.x)) {\n path.push(['L', crookX, y]);\n }\n path.push(['L', breakAt.x, breakAt.y], ['L', touchingSliceAt.x, touchingSliceAt.y]);\n return path;\n }\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return PiePoint;\n });\n _registerModule(_modules, 'Series/Pie/PieSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A pie chart is a circular graphic which is divided into slices to\n * illustrate numerical proportion.\n *\n * @sample highcharts/demo/pie-basic/\n * Pie chart\n *\n * @extends plotOptions.line\n * @excluding animationLimit, boostThreshold, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dataSorting, dragDrop,\n * findNearestPointBy, getExtremesFromAll, label, lineWidth,\n * linkedTo, marker, negativeColor, pointInterval,\n * pointIntervalUnit, pointPlacement, pointStart,\n * softThreshold, stacking, step, threshold, turboThreshold,\n * zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts highmaps\n * @optionparent plotOptions.pie\n *\n * @private\n */\n const PieSeriesDefaults = {\n /**\n * The corner radius of the border surrounding each slice. A number\n * signifies pixels. A percentage string, like for example `50%`, signifies\n * a size relative to the radius and the inner radius.\n *\n * @sample highcharts/plotoptions/series-border-radius\n * Column and pie with rounded border\n *\n * @since 11.0.0\n *\n * @type {number|string|Highcharts.BorderRadiusOptionsObject}\n */\n borderRadius: 3,\n /**\n * @excluding legendItemClick\n * @apioption plotOptions.pie.events\n */\n /**\n * Fires when the checkbox next to the point name in the legend is\n * clicked. One parameter, event, is passed to the function. The state\n * of the checkbox is found by event.checked. The checked item is found\n * by event.item. Return false to prevent the default action which is to\n * toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Function}\n * @since 1.2.0\n * @product highcharts highmaps\n * @context Highcharts.Point\n * @apioption plotOptions.pie.events.checkboxClick\n */\n /**\n * Fires when the legend item belonging to the pie point (slice) is\n * clicked. The `this` keyword refers to the point itself. One\n * parameter, `event`, is passed to the function, containing common\n * event information. The default action is to toggle the visibility of\n * the point. This can be prevented by calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-point-events-legenditemclick/\n * Confirm toggle visibility\n *\n * @type {Highcharts.PointLegendItemClickCallbackFunction}\n * @since 1.2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.point.events.legendItemClick\n */\n /**\n * The center of the pie chart relative to the plot area. Can be\n * percentages or pixel values. The default behaviour (as of 3.0) is to\n * center the pie so that all slices and data labels are within the plot\n * area. As a consequence, the pie may actually jump around in a chart\n * with dynamic values, as the data labels move. In that case, the\n * center should be explicitly set, for example to `[\"50%\", \"50%\"]`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-center/\n * Centered at 100, 100\n *\n * @type {Array<(number|string|null),(number|string|null)>}\n * @default [null, null]\n * @product highcharts highmaps\n *\n * @private\n */\n center: [null, null],\n /**\n * The color of the pie series. A pie series is represented as an empty\n * circle if the total sum of its values is 0. Use this property to\n * define the color of its border.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @apioption plotOptions.pie.color\n */\n /**\n * @product highcharts\n *\n * @private\n */\n clip: false,\n /**\n * @ignore-option\n *\n * @private\n */\n colorByPoint: true,\n /**\n * A series specific or series type specific color set to use instead\n * of the global [colors](#colors).\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome/\n * Set default colors for all pies\n *\n * @type {Array}\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.colors\n */\n /**\n * @declare Highcharts.SeriesPieDataLabelsOptionsObject\n * @extends plotOptions.series.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @private\n */\n dataLabels: {\n /**\n * Alignment method for data labels. Possible values are:\n *\n * - `plotEdges`: Each label touches the nearest vertical edge of\n * the plot area.\n *\n * - `connectors`: Connectors have the same x position and the\n * widest label of each half (left & right) touches the nearest\n * vertical edge of the plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-connectors/\n * alignTo: connectors\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-plotedges/\n * alignTo: plotEdges\n *\n * @type {string}\n * @since 7.0.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.alignTo\n */\n allowOverlap: true,\n /**\n * The color of the line connecting the data label to the pie slice.\n * The default color is the same as the point's color.\n *\n * In styled mode, the connector stroke is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorcolor/\n * Blue connectors\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorColor\n */\n /**\n * The distance from the data label to the connector. Note that\n * data labels also have a default `padding`, so in order for the\n * connector to touch the text, the `padding` must also be 0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorpadding/\n * No padding\n *\n * @since 2.1\n * @product highcharts highmaps\n */\n connectorPadding: 5,\n /**\n * Specifies the method that is used to generate the connector path.\n * Highcharts provides 3 built-in connector shapes: `'crookedLine'`\n * (default since v11), `'fixedOffset'` and `'straight'`.\n *\n * Users can provide their own method by passing a function instead of a\n * string. Three arguments are passed to the callback:\n *\n * - An object that holds the information about the coordinates of the\n * label (`x` & `y` properties) and how the label is located in\n * relation to the pie (`alignment` property). `alignment` can by one\n * of the following: `'left'` (pie on the left side of the data\n * label), `'right'` (pie on the right side of the data label) or\n * `'center'` (data label overlaps the pie).\n *\n * - An object that holds the information about the position of the\n * connector. Its `touchingSliceAt` porperty tells the position of\n * the place where the connector touches the slice.\n *\n * - Data label options\n *\n * The function has to return an SVG path definition in array form (see\n * the example).\n *\n * @sample {highcharts}\n * highcharts/plotoptions/pie-datalabels-connectorshape-string/\n * connectorShape is a String\n * @sample {highcharts}\n * highcharts/plotoptions/pie-datalabels-connectorshape-function/\n * connectorShape is a function\n *\n * @type {string|Function}\n * @since 7.0.0\n * @product highcharts highmaps\n */\n connectorShape: 'crookedLine',\n /**\n * The width of the line connecting the data label to the pie slice.\n *\n * In styled mode, the connector stroke width is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorwidth-disabled/\n * Disable the connector\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {number}\n * @default 1\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorWidth\n */\n /**\n * Works only if `connectorShape` is `'crookedLine'`. It defines how\n * far from the vertical plot edge the coonnector path should be\n * crooked. With the default, `undefined`, the crook is placed so that\n * the horizontal line from the label intersects with the radial line\n * extending through the center of the pie slice.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-crookdistance/\n * crookDistance set to 90%\n *\n * @since 7.0.0\n * @product highcharts highmaps\n */\n crookDistance: void 0,\n /**\n * The distance of the data label from the pie's edge. Negative\n * numbers put the data label on top of the pie slices. Can also be\n * defined as a percentage of pie's radius. Connectors are only\n * shown for data labels outside the pie.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-distance/\n * Data labels on top of the pie\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highmaps\n */\n distance: 30,\n enabled: true,\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n *\n * @type {string}\n * @default undefined\n * @since 3.0\n * @apioption plotOptions.pie.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that\n * if a `format` is defined, the format takes precedence and the\n * formatter is ignored.\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @default function () { return this.point.isNull ? void 0 : this.point.name; }\n */\n formatter: function () {\n return this.point.isNull ? void 0 : this.point.name;\n },\n /**\n * Whether to render the connector as a soft arc or a line with a sharp\n * break. Works only if `connectorShape` equals to `fixedOffset`.\n *\n * @sample {highcharts}\n * highcharts/plotoptions/pie-datalabels-softconnector-true/\n * Soft\n * @sample {highcharts}\n * highcharts/plotoptions/pie-datalabels-softconnector-false/\n * Non soft\n *\n * @since 2.1.7\n * @product highcharts highmaps\n */\n softConnector: true,\n /**\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow\n * Long labels truncated with an ellipsis\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap\n * Long labels are wrapped\n *\n * @type {Highcharts.CSSObject}\n * @apioption plotOptions.pie.dataLabels.style\n */\n x: 0\n },\n /**\n * If the total sum of the pie's values is 0, the series is represented\n * as an empty circle . The `fillColor` option defines the color of that\n * circle. Use [pie.borderWidth](#plotOptions.pie.borderWidth) to set\n * the border thickness.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @private\n */\n fillColor: void 0,\n /**\n * The end angle of the pie in degrees where 0 is top and 90 is right.\n * Defaults to `startAngle` plus 360.\n *\n * @sample {highcharts} highcharts/demo/pie-semi-circle/\n * Semi-circle donut\n *\n * @type {number}\n * @since 1.3.6\n * @product highcharts highmaps\n * @apioption plotOptions.pie.endAngle\n */\n /**\n * Thickness describing the ring size for a donut type chart,\n * overriding [innerSize](#plotOptions.pie.innerSize).\n *\n * @type {number}\n * @default undefined\n * @product highcharts\n * @since 10.1.0\n * @apioption plotOptions.pie.thickness\n * @private\n */\n /**\n * Equivalent to [chart.ignoreHiddenSeries](#chart.ignoreHiddenSeries),\n * this option tells whether the series shall be redrawn as if the\n * hidden point were `null`.\n *\n * The default value changed from `false` to `true` with Highcharts\n * 3.0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-ignorehiddenpoint/\n * True, the hiddden point is ignored\n *\n * @since 2.3.0\n * @product highcharts highmaps\n *\n * @private\n */\n ignoreHiddenPoint: true,\n /**\n * @ignore-option\n *\n * @private\n */\n inactiveOtherPoints: true,\n /**\n * The size of the inner diameter for the pie. A size greater than 0\n * renders a donut chart. Can be a percentage or pixel value.\n * Percentages are relative to the pie size. Pixel values are given as\n * integers. Setting overridden by thickness.\n *\n *\n * Note: in Highcharts < 4.1.2, the percentage was relative to the plot\n * area, not the pie size.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-80px/\n * 80px inner size\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-50percent/\n * 50% of the plot area\n * @sample {highcharts} highcharts/demo/3d-pie-donut/\n * 3D donut\n *\n * @type {number|string}\n * @default 0\n * @since 2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.innerSize\n */\n /**\n * @ignore-option\n *\n * @private\n */\n legendType: 'point',\n /**\n * @ignore-option\n *\n * @private\n */\n marker: null,\n /**\n * The minimum size for a pie in response to auto margins. The pie will\n * try to shrink to make room for data labels in side the plot area,\n * but only to this size.\n *\n * @type {number|string}\n * @default 80\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.minSize\n */\n /**\n * The diameter of the pie relative to the plot area. Can be a\n * percentage or pixel value. Pixel values are given as integers. The\n * default behaviour (as of 3.0) is to scale to the plot area and give\n * room for data labels within the plot area.\n * [slicedOffset](#plotOptions.pie.slicedOffset) is also included in the\n * default size calculation. As a consequence, the size of the pie may\n * vary when points are updated and data labels more around. In that\n * case it is best to set a fixed value, for example `\"75%\"`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-size/\n * Smaller pie\n *\n * @type {number|string|null}\n * @product highcharts highmaps\n *\n * @private\n */\n size: null,\n /**\n * Whether to display this particular series or series type in the\n * legend. Since 2.1, pies are not shown in the legend by default.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @product highcharts highmaps\n *\n * @private\n */\n showInLegend: false,\n /**\n * If a point is sliced, moved out from the center, how many pixels\n * should it be moved?.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-slicedoffset-20/\n * 20px offset\n *\n * @product highcharts highmaps\n *\n * @private\n */\n slicedOffset: 10,\n /**\n * The start angle of the pie slices in degrees where 0 is top and 90\n * right.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-startangle-90/\n * Start from right\n *\n * @type {number}\n * @default 0\n * @since 2.3.4\n * @product highcharts highmaps\n * @apioption plotOptions.pie.startAngle\n */\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series, or out of the plot area. When false, the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @product highcharts highmaps\n *\n * @private\n */\n stickyTracking: false,\n tooltip: {\n followPointer: true\n },\n /**\n * The color of the border surrounding each slice. When `null`, the\n * border takes the same color as the slice fill. This can be used\n * together with a `borderWidth` to fill drawing gaps created by\n * antialiazing artefacts in borderless pies.\n *\n * In styled mode, the border stroke is given in the `.highcharts-point`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-bordercolor-black/\n * Black border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highmaps\n *\n * @private\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the border surrounding each slice.\n *\n * When setting the border width to 0, there may be small gaps between\n * the slices due to SVG antialiasing artefacts. To work around this,\n * keep the border width at 0.5 or 1, but set the `borderColor` to\n * `null` instead.\n *\n * In styled mode, the border stroke width is given in the\n * `.highcharts-point` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-borderwidth/\n * 3px border\n *\n * @product highcharts highmaps\n *\n * @private\n */\n borderWidth: 1,\n /**\n * @ignore-option\n * @private\n */\n lineWidth: void 0,\n states: {\n /**\n * @extends plotOptions.series.states.hover\n * @excluding marker, lineWidth, lineWidthPlus\n * @product highcharts highmaps\n */\n hover: {\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightness is by default replaced\n * by a fill-opacity given in the `.highcharts-point-hover`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-states-hover-brightness/\n * Brightened by 0.5\n *\n * @product highcharts highmaps\n */\n brightness: 0.1\n }\n }\n };\n /**\n * A `pie` series. If the [type](#series.pie.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.pie\n * @excluding cropThreshold, dataParser, dataURL, linkedTo, stack, xAxis, yAxis,\n * dataSorting, step, boostThreshold, boostBlending\n * @product highcharts highmaps\n * @apioption series.pie\n */\n /**\n * An array of data points for the series. For the `pie` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.pie.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * y: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array|null|*>}\n * @extends series.line.data\n * @excluding marker, x\n * @product highcharts highmaps\n * @apioption series.pie.data\n */\n /**\n * @type {Highcharts.SeriesPieDataLabelsOptionsObject}\n * @product highcharts highmaps\n * @apioption series.pie.data.dataLabels\n */\n /**\n * The sequential index of the data point in the legend.\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.pie.data.legendIndex\n */\n /**\n * Whether to display a slice offset from the center.\n *\n * @sample {highcharts} highcharts/point/sliced/\n * One sliced point\n *\n * @type {boolean}\n * @product highcharts highmaps\n * @apioption series.pie.data.sliced\n */\n /**\n * @extends plotOptions.pie.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @product highcharts highmaps\n * @apioption series.pie.dataLabels\n */\n /**\n * @excluding legendItemClick\n * @product highcharts highmaps\n * @apioption series.pie.events\n */\n ''; // placeholder for transpiled doclets above\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Pie/PieSeries.js', [_modules['Series/CenteredUtilities.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Core/Globals.js'], _modules['Series/Pie/PiePoint.js'], _modules['Series/Pie/PieSeriesDefaults.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Utilities.js']], function (CU, ColumnSeries, H, PiePoint, PieSeriesDefaults, Series, SeriesRegistry, Symbols, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { getStartAndEndRadians } = CU;\n const { noop } = H;\n const { clamp, extend, fireEvent, merge, pick, relativeLength } = U;\n /* *\n *\n * Class\n *\n * */\n /**\n * Pie series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.pie\n *\n * @augments Highcharts.Series\n */\n class PieSeries extends Series {\n constructor() {\n /* *\n *\n * Static Properties\n *\n * */\n super(...arguments);\n /* *\n *\n * Properties\n *\n * */\n this.center = void 0;\n this.data = void 0;\n this.maxLabelDistance = void 0;\n this.options = void 0;\n this.points = void 0;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animates the pies in.\n * @private\n */\n animate(init) {\n const series = this, points = series.points, startAngleRad = series.startAngleRad;\n if (!init) {\n points.forEach(function (point) {\n const graphic = point.graphic, args = point.shapeArgs;\n if (graphic && args) {\n // start values\n graphic.attr({\n // animate from inner radius (#779)\n r: pick(point.startR, (series.center && series.center[3] / 2)),\n start: startAngleRad,\n end: startAngleRad\n });\n // animate\n graphic.animate({\n r: args.r,\n start: args.start,\n end: args.end\n }, series.options.animation);\n }\n });\n }\n }\n /**\n * Called internally to draw auxiliary graph in pie-like series in\n * situtation when the default graph is not sufficient enough to present\n * the data well. Auxiliary graph is saved in the same object as\n * regular graph.\n * @private\n */\n drawEmpty() {\n const start = this.startAngleRad, end = this.endAngleRad, options = this.options;\n let centerX, centerY;\n // Draw auxiliary graph if there're no visible points.\n if (this.total === 0 && this.center) {\n centerX = this.center[0];\n centerY = this.center[1];\n if (!this.graph) {\n this.graph = this.chart.renderer\n .arc(centerX, centerY, this.center[1] / 2, 0, start, end)\n .addClass('highcharts-empty-series')\n .add(this.group);\n }\n this.graph.attr({\n d: Symbols.arc(centerX, centerY, this.center[2] / 2, 0, {\n start,\n end,\n innerR: this.center[3] / 2\n })\n });\n if (!this.chart.styledMode) {\n this.graph.attr({\n 'stroke-width': options.borderWidth,\n fill: options.fillColor || 'none',\n stroke: options.color || \"#cccccc\" /* Palette.neutralColor20 */\n });\n }\n }\n else if (this.graph) { // Destroy the graph object.\n this.graph = this.graph.destroy();\n }\n }\n /**\n * Slices in pie chart are initialized in DOM, but it's shapes and\n * animations are normally run in `drawPoints()`.\n * @private\n */\n drawPoints() {\n const renderer = this.chart.renderer;\n this.points.forEach(function (point) {\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (point.graphic && point.hasNewShapeType()) {\n point.graphic = point.graphic.destroy();\n }\n if (!point.graphic) {\n point.graphic = renderer[point.shapeType](point.shapeArgs)\n .add(point.series.group);\n point.delayedRendering = true;\n }\n });\n }\n /**\n * Extend the generatePoints method by adding total and percentage\n * properties to each point\n * @private\n */\n generatePoints() {\n super.generatePoints();\n this.updateTotals();\n }\n /**\n * Utility for getting the x value from a given y, used for\n * anticollision logic in data labels. Added point for using specific\n * points' label distance.\n * @private\n */\n getX(y, left, point) {\n const center = this.center, \n // Variable pie has individual radius\n radius = this.radii ?\n this.radii[point.index] || 0 :\n center[2] / 2;\n const angle = Math.asin(clamp((y - center[1]) / (radius + point.labelDistance), -1, 1));\n const x = center[0] +\n (left ? -1 : 1) *\n (Math.cos(angle) * (radius + point.labelDistance)) +\n (point.labelDistance > 0 ?\n (left ? -1 : 1) * this.options.dataLabels.padding :\n 0);\n return x;\n }\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n hasData() {\n return !!this.processedXData.length; // != 0\n }\n /**\n * Draw the data points\n * @private\n */\n redrawPoints() {\n const series = this, chart = series.chart;\n let groupTranslation, graphic, pointAttr, shapeArgs;\n this.drawEmpty();\n // Apply the drop-shadow to the group because otherwise each element\n // would cast a shadow on others\n if (series.group && !chart.styledMode) {\n series.group.shadow(series.options.shadow);\n }\n // draw the slices\n series.points.forEach(function (point) {\n const animateTo = {};\n graphic = point.graphic;\n if (!point.isNull && graphic) {\n shapeArgs = point.shapeArgs;\n // If the point is sliced, use special translation, else use\n // plot area translation\n groupTranslation = point.getTranslate();\n if (!chart.styledMode) {\n pointAttr = series.pointAttribs(point, (point.selected && 'select'));\n }\n // Draw the slice\n if (!point.delayedRendering) {\n graphic\n .setRadialReference(series.center);\n if (!chart.styledMode) {\n merge(true, animateTo, pointAttr);\n }\n merge(true, animateTo, shapeArgs, groupTranslation);\n graphic.animate(animateTo);\n }\n else {\n graphic\n .setRadialReference(series.center)\n .attr(shapeArgs)\n .attr(groupTranslation);\n if (!chart.styledMode) {\n graphic\n .attr(pointAttr)\n .attr({ 'stroke-linejoin': 'round' });\n }\n point.delayedRendering = false;\n }\n graphic\n .attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n graphic.addClass(point.getClassName(), true);\n }\n else if (graphic) {\n point.graphic = graphic.destroy();\n }\n });\n }\n /**\n * Utility for sorting data labels.\n * @private\n */\n sortByAngle(points, sign) {\n points.sort(function (a, b) {\n return ((typeof a.angle !== 'undefined') &&\n (b.angle - a.angle) * sign);\n });\n }\n /**\n * Do translation for pie slices\n * @private\n */\n translate(positions) {\n fireEvent(this, 'translate');\n this.generatePoints();\n const series = this, precision = 1000, // issue #172\n options = series.options, slicedOffset = options.slicedOffset, connectorOffset = slicedOffset + (options.borderWidth || 0), radians = getStartAndEndRadians(options.startAngle, options.endAngle), startAngleRad = series.startAngleRad = radians.start, endAngleRad = series.endAngleRad = radians.end, circ = endAngleRad - startAngleRad, // 2 * Math.PI,\n points = series.points, labelDistance = options.dataLabels.distance, ignoreHiddenPoint = options.ignoreHiddenPoint, len = points.length;\n let finalConnectorOffset, start, end, angle, \n // the x component of the radius vector for a given point\n radiusX, radiusY, i, point, cumulative = 0;\n // Get positions - either an integer or a percentage string must be\n // given. If positions are passed as a parameter, we're in a\n // recursive loop for adjusting space for data labels.\n if (!positions) {\n series.center = positions = series.getCenter();\n }\n // Calculate the geometry for each point\n for (i = 0; i < len; i++) {\n point = points[i];\n // set start and end angle\n start = startAngleRad + (cumulative * circ);\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n cumulative += point.percentage / 100;\n }\n end = startAngleRad + (cumulative * circ);\n // set the shape\n const shapeArgs = {\n x: positions[0],\n y: positions[1],\n r: positions[2] / 2,\n innerR: positions[3] / 2,\n start: Math.round(start * precision) / precision,\n end: Math.round(end * precision) / precision\n };\n point.shapeType = 'arc';\n point.shapeArgs = shapeArgs;\n // Used for distance calculation for specific point.\n point.labelDistance = pick((point.options.dataLabels &&\n point.options.dataLabels.distance), labelDistance);\n // Compute point.labelDistance if it's defined as percentage\n // of slice radius (#8854)\n point.labelDistance = relativeLength(point.labelDistance, shapeArgs.r);\n // Saved for later dataLabels distance calculation.\n series.maxLabelDistance = Math.max(series.maxLabelDistance || 0, point.labelDistance);\n // The angle must stay within -90 and 270 (#2645)\n angle = (end + start) / 2;\n if (angle > 1.5 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n else if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Center for the sliced out slice\n point.slicedTranslation = {\n translateX: Math.round(Math.cos(angle) * slicedOffset),\n translateY: Math.round(Math.sin(angle) * slicedOffset)\n };\n // set the anchor point for tooltips\n radiusX = Math.cos(angle) * positions[2] / 2;\n radiusY = Math.sin(angle) * positions[2] / 2;\n point.tooltipPos = [\n positions[0] + radiusX * 0.7,\n positions[1] + radiusY * 0.7\n ];\n point.half = angle < -Math.PI / 2 || angle > Math.PI / 2 ?\n 1 :\n 0;\n point.angle = angle;\n // Set the anchor point for data labels. Use point.labelDistance\n // instead of labelDistance // #1174\n // finalConnectorOffset - not override connectorOffset value.\n finalConnectorOffset = Math.min(connectorOffset, point.labelDistance / 5); // #1678\n point.labelPosition = {\n natural: {\n // initial position of the data label - it's utilized for\n // finding the final position for the label\n x: positions[0] + radiusX + Math.cos(angle) *\n point.labelDistance,\n y: positions[1] + radiusY + Math.sin(angle) *\n point.labelDistance\n },\n computed: {\n // used for generating connector path -\n // initialized later in drawDataLabels function\n // x: undefined,\n // y: undefined\n },\n // left - pie on the left side of the data label\n // right - pie on the right side of the data label\n // center - data label overlaps the pie\n alignment: point.labelDistance < 0 ?\n 'center' : point.half ? 'right' : 'left',\n connectorPosition: {\n breakAt: {\n x: positions[0] + radiusX + Math.cos(angle) *\n finalConnectorOffset,\n y: positions[1] + radiusY + Math.sin(angle) *\n finalConnectorOffset\n },\n touchingSliceAt: {\n x: positions[0] + radiusX,\n y: positions[1] + radiusY\n }\n }\n };\n }\n fireEvent(series, 'afterTranslate');\n }\n /**\n * Recompute total chart sum and update percentages of points.\n * @private\n */\n updateTotals() {\n const points = this.points, len = points.length, ignoreHiddenPoint = this.options.ignoreHiddenPoint;\n let i, point, total = 0;\n // Get the total sum\n for (i = 0; i < len; i++) {\n point = points[i];\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n total += point.y;\n }\n }\n this.total = total;\n // Set each point's properties\n for (i = 0; i < len; i++) {\n point = points[i];\n point.percentage =\n (total > 0 && (point.visible || !ignoreHiddenPoint)) ?\n point.y / total * 100 :\n 0;\n point.total = total;\n }\n }\n }\n PieSeries.defaultOptions = merge(Series.defaultOptions, PieSeriesDefaults);\n extend(PieSeries.prototype, {\n axisTypes: [],\n directTouch: true,\n drawGraph: void 0,\n drawTracker: ColumnSeries.prototype.drawTracker,\n getCenter: CU.getCenter,\n getSymbol: noop,\n isCartesian: false,\n noSharedTooltip: true,\n pointAttribs: ColumnSeries.prototype.pointAttribs,\n pointClass: PiePoint,\n requireSorting: false,\n searchPoint: noop,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('pie', PieSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeries;\n });\n _registerModule(_modules, 'Series/Pie/PieDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, H, R, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { noop } = H;\n const { distribute } = R;\n const { series: Series } = SeriesRegistry;\n const { arrayMax, clamp, defined, merge, pick, relativeLength } = U;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n const dataLabelPositioners = {\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionY: function (point) {\n return point.top + point.distributeBox.pos;\n },\n // get the x - use the natural x position for labels near the\n // top and bottom, to prevent the top and botton slice\n // connectors from touching each other on either side\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionX: function (series, point, y, naturalY) {\n return series.getX(y < point.top + 2 || y > point.bottom - 2 ?\n naturalY :\n y, point.half, point);\n },\n // dataLabels.distance determines the x position of the label\n justify: function (point, radius, seriesCenter) {\n return seriesCenter[0] + (point.half ? -1 : 1) *\n (radius + point.labelDistance);\n },\n // Left edges of the left-half labels touch the left edge of the plot\n // area. Right edges of the right-half labels touch the right edge of\n // the plot area.\n alignToPlotEdges: function (dataLabel, half, plotWidth, plotLeft) {\n const dataLabelWidth = dataLabel.getBBox().width;\n return half ? dataLabelWidth + plotLeft :\n plotWidth - dataLabelWidth - plotLeft;\n },\n // Connectors of each side end in the same x position. Labels are\n // aligned to them. Left edge of the widest left-half label touches the\n // left edge of the plot area. Right edge of the widest right-half label\n // touches the right edge of the plot area.\n alignToConnectors: function (points, half, plotWidth, plotLeft) {\n let maxDataLabelWidth = 0, dataLabelWidth;\n // find widest data label\n points.forEach(function (point) {\n dataLabelWidth = point.dataLabel.getBBox().width;\n if (dataLabelWidth > maxDataLabelWidth) {\n maxDataLabelWidth = dataLabelWidth;\n }\n });\n return half ? maxDataLabelWidth + plotLeft :\n plotWidth - maxDataLabelWidth - plotLeft;\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function compose(PieSeriesClass) {\n DataLabel.compose(Series);\n if (U.pushUnique(composedMembers, PieSeriesClass)) {\n const pieProto = PieSeriesClass.prototype;\n pieProto.dataLabelPositioners = dataLabelPositioners;\n pieProto.alignDataLabel = noop;\n pieProto.drawDataLabels = drawDataLabels;\n pieProto.placeDataLabels = placeDataLabels;\n pieProto.verifyDataLabelOverflow = verifyDataLabelOverflow;\n }\n }\n ColumnDataLabel.compose = compose;\n /**\n * Override the base drawDataLabels method by pie specific functionality\n * @private\n */\n function drawDataLabels() {\n const series = this, data = series.data, chart = series.chart, options = series.options.dataLabels || {}, connectorPadding = options.connectorPadding, plotWidth = chart.plotWidth, plotHeight = chart.plotHeight, plotLeft = chart.plotLeft, maxWidth = Math.round(chart.chartWidth / 3), seriesCenter = series.center, radius = seriesCenter[2] / 2, centerY = seriesCenter[1], halves = [\n [],\n [] // left\n ], overflow = [0, 0, 0, 0], // top, right, bottom, left\n dataLabelPositioners = series.dataLabelPositioners;\n let point, connectorWidth, connector, dataLabel, dataLabelWidth, \n // labelPos,\n labelPosition, labelHeight, \n // divide the points into right and left halves for anti collision\n x, y, visibility, j, pointDataLabelsOptions;\n // get out if not enabled\n if (!series.visible ||\n (!options.enabled &&\n !series._hasPointLabels)) {\n return;\n }\n // Reset all labels that have been shortened\n data.forEach(function (point) {\n if (point.dataLabel && point.visible && point.dataLabel.shortened) {\n point.dataLabel\n .attr({\n width: 'auto'\n }).css({\n width: 'auto',\n textOverflow: 'clip'\n });\n point.dataLabel.shortened = false;\n }\n });\n // run parent method\n Series.prototype.drawDataLabels.apply(series);\n data.forEach(function (point) {\n if (point.dataLabel) {\n if (point.visible) { // #407, #2510\n // Arrange points for detection collision\n halves[point.half].push(point);\n // Reset positions (#4905)\n point.dataLabel._pos = null;\n // Avoid long labels squeezing the pie size too far down\n if (!defined(options.style.width) &&\n !defined(point.options.dataLabels &&\n point.options.dataLabels.style &&\n point.options.dataLabels.style.width)) {\n if (point.dataLabel.getBBox().width > maxWidth) {\n point.dataLabel.css({\n // Use a fraction of the maxWidth to avoid\n // wrapping close to the end of the string.\n width: Math.round(maxWidth * 0.7) + 'px'\n });\n point.dataLabel.shortened = true;\n }\n }\n }\n else {\n point.dataLabel = point.dataLabel.destroy();\n // Workaround to make pies destroy multiple datalabels\n // correctly. This logic needs rewriting to support multiple\n // datalabels fully.\n if (point.dataLabels && point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n }\n }\n });\n /* Loop over the points in each half, starting from the top and bottom\n * of the pie to detect overlapping labels.\n */\n halves.forEach((points, i) => {\n const length = points.length, positions = [];\n let top, bottom, naturalY, sideOverflow, size = 0, distributionLength;\n if (!length) {\n return;\n }\n // Sort by angle\n series.sortByAngle(points, i - 0.5);\n // Only do anti-collision when we have dataLabels outside the pie\n // and have connectors. (#856)\n if (series.maxLabelDistance > 0) {\n top = Math.max(0, centerY - radius - series.maxLabelDistance);\n bottom = Math.min(centerY + radius + series.maxLabelDistance, chart.plotHeight);\n points.forEach(function (point) {\n // check if specific points' label is outside the pie\n if (point.labelDistance > 0 && point.dataLabel) {\n // point.top depends on point.labelDistance value\n // Used for calculation of y value in getX method\n point.top = Math.max(0, centerY - radius - point.labelDistance);\n point.bottom = Math.min(centerY + radius + point.labelDistance, chart.plotHeight);\n size = point.dataLabel.getBBox().height || 21;\n // point.positionsIndex is needed for getting index of\n // parameter related to specific point inside positions\n // array - not every point is in positions array.\n point.distributeBox = {\n target: point.labelPosition.natural.y -\n point.top + size / 2,\n size,\n rank: point.y\n };\n positions.push(point.distributeBox);\n }\n });\n distributionLength = bottom + size - top;\n distribute(positions, distributionLength, distributionLength / 5);\n }\n // Now the used slots are sorted, fill them up sequentially\n for (j = 0; j < length; j++) {\n point = points[j];\n // labelPos = point.labelPos;\n labelPosition = point.labelPosition;\n dataLabel = point.dataLabel;\n visibility = point.visible === false ? 'hidden' : 'inherit';\n naturalY = labelPosition.natural.y;\n y = naturalY;\n if (positions && defined(point.distributeBox)) {\n if (typeof point.distributeBox.pos === 'undefined') {\n visibility = 'hidden';\n }\n else {\n labelHeight = point.distributeBox.size;\n // Find label's y position\n y = dataLabelPositioners\n .radialDistributionY(point);\n }\n }\n // It is needed to delete point.positionIndex for\n // dynamically added points etc.\n delete point.positionIndex; // @todo unused\n // Find label's x position\n // justify is undocumented in the API - preserve support for it\n if (options.justify) {\n x = dataLabelPositioners.justify(point, radius, seriesCenter);\n }\n else {\n switch (options.alignTo) {\n case 'connectors':\n x = dataLabelPositioners.alignToConnectors(points, i, plotWidth, plotLeft);\n break;\n case 'plotEdges':\n x = dataLabelPositioners.alignToPlotEdges(dataLabel, i, plotWidth, plotLeft);\n break;\n default:\n x = dataLabelPositioners.radialDistributionX(series, point, y, naturalY);\n }\n }\n // Record the placement and visibility\n dataLabel._attr = {\n visibility: visibility,\n align: labelPosition.alignment\n };\n pointDataLabelsOptions = point.options.dataLabels || {};\n dataLabel._pos = {\n x: (x +\n pick(pointDataLabelsOptions.x, options.x) + // (#12985)\n ({\n left: connectorPadding,\n right: -connectorPadding\n }[labelPosition.alignment] || 0)),\n y: (y +\n pick(pointDataLabelsOptions.y, options.y) - // (#12985)\n // Vertically center\n dataLabel.getBBox().height / 2)\n };\n // labelPos.x = x;\n // labelPos.y = y;\n if (labelPosition) {\n labelPosition.computed.x = x;\n labelPosition.computed.y = y;\n }\n // Detect overflowing data labels\n if (pick(options.crop, true)) {\n dataLabelWidth = dataLabel.getBBox().width;\n sideOverflow = null;\n // Overflow left\n if (x - dataLabelWidth < connectorPadding &&\n i === 1 // left half\n ) {\n sideOverflow = Math.round(dataLabelWidth - x + connectorPadding);\n overflow[3] = Math.max(sideOverflow, overflow[3]);\n // Overflow right\n }\n else if (x + dataLabelWidth > plotWidth - connectorPadding &&\n i === 0 // right half\n ) {\n sideOverflow = Math.round(x + dataLabelWidth - plotWidth + connectorPadding);\n overflow[1] = Math.max(sideOverflow, overflow[1]);\n }\n // Overflow top\n if (y - labelHeight / 2 < 0) {\n overflow[0] = Math.max(Math.round(-y + labelHeight / 2), overflow[0]);\n // Overflow left\n }\n else if (y + labelHeight / 2 > plotHeight) {\n overflow[2] = Math.max(Math.round(y + labelHeight / 2 - plotHeight), overflow[2]);\n }\n dataLabel.sideOverflow = sideOverflow;\n }\n } // for each point\n }); // for each half\n // Do not apply the final placement and draw the connectors until we\n // have verified that labels are not spilling over.\n if (arrayMax(overflow) === 0 ||\n this.verifyDataLabelOverflow(overflow)) {\n // Place the labels in the final position\n this.placeDataLabels();\n this.points.forEach(function (point) {\n // #8864: every connector can have individual options\n pointDataLabelsOptions =\n merge(options, point.options.dataLabels);\n connectorWidth =\n pick(pointDataLabelsOptions.connectorWidth, 1);\n // Draw the connector\n if (connectorWidth) {\n let isNew;\n connector = point.connector;\n dataLabel = point.dataLabel;\n if (dataLabel &&\n dataLabel._pos &&\n point.visible &&\n point.labelDistance > 0) {\n visibility = dataLabel._attr.visibility;\n isNew = !connector;\n if (isNew) {\n point.connector = connector = chart.renderer\n .path()\n .addClass('highcharts-data-label-connector ' +\n ' highcharts-color-' + point.colorIndex +\n (point.className ?\n ' ' + point.className :\n ''))\n .add(series.dataLabelsGroup);\n if (!chart.styledMode) {\n connector.attr({\n 'stroke-width': connectorWidth,\n 'stroke': (pointDataLabelsOptions.connectorColor ||\n point.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n }\n connector[isNew ? 'attr' : 'animate']({\n d: point.getConnectorPath()\n });\n connector.attr('visibility', visibility);\n }\n else if (connector) {\n point.connector = connector.destroy();\n }\n }\n });\n }\n }\n /**\n * Perform the final placement of the data labels after we have verified\n * that they fall within the plot area.\n * @private\n */\n function placeDataLabels() {\n this.points.forEach(function (point) {\n let dataLabel = point.dataLabel, _pos;\n if (dataLabel && point.visible) {\n _pos = dataLabel._pos;\n if (_pos) {\n // Shorten data labels with ellipsis if they still overflow\n // after the pie has reached minSize (#223).\n if (dataLabel.sideOverflow) {\n dataLabel._attr.width =\n Math.max(dataLabel.getBBox().width -\n dataLabel.sideOverflow, 0);\n dataLabel.css({\n width: dataLabel._attr.width + 'px',\n textOverflow: ((this.options.dataLabels.style || {})\n .textOverflow ||\n 'ellipsis')\n });\n dataLabel.shortened = true;\n }\n dataLabel.attr(dataLabel._attr);\n dataLabel[dataLabel.moved ? 'animate' : 'attr'](_pos);\n dataLabel.moved = true;\n }\n else if (dataLabel) {\n dataLabel.attr({ y: -9999 });\n }\n }\n // Clear for update\n delete point.distributeBox;\n }, this);\n }\n /**\n * Verify whether the data labels are allowed to draw, or we should run more\n * translation and data label positioning to keep them inside the plot area.\n * Returns true when data labels are ready to draw.\n * @private\n */\n function verifyDataLabelOverflow(overflow) {\n let center = this.center, options = this.options, centerOption = options.center, minSize = options.minSize || 80, newSize = minSize, \n // If a size is set, return true and don't try to shrink the pie\n // to fit the labels.\n ret = options.size !== null;\n if (!ret) {\n // Handle horizontal size and center\n if (centerOption[0] !== null) { // Fixed center\n newSize = Math.max(center[2] -\n Math.max(overflow[1], overflow[3]), minSize);\n }\n else { // Auto center\n newSize = Math.max(\n // horizontal overflow\n center[2] - overflow[1] - overflow[3], minSize);\n // horizontal center\n center[0] += (overflow[3] - overflow[1]) / 2;\n }\n // Handle vertical size and center\n if (centerOption[1] !== null) { // Fixed center\n newSize = clamp(newSize, minSize, center[2] - Math.max(overflow[0], overflow[2]));\n }\n else { // Auto center\n newSize = clamp(newSize, minSize, \n // vertical overflow\n center[2] - overflow[0] - overflow[2]);\n // vertical center\n center[1] += (overflow[0] - overflow[2]) / 2;\n }\n // If the size must be decreased, we need to run translate and\n // drawDataLabels again\n if (newSize < center[2]) {\n center[2] = newSize;\n center[3] = Math.min(// #3632\n options.thickness ?\n Math.max(0, newSize - options.thickness * 2) :\n Math.max(0, relativeLength(options.innerSize || 0, newSize)), newSize); // #6647\n this.translate(center);\n if (this.drawDataLabels) {\n this.drawDataLabels();\n }\n // Else, return true to indicate that the pie and its labels is\n // within the plot area\n }\n else {\n ret = true;\n }\n }\n return ret;\n }\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Extensions/OverlappingDataLabels.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Utilities.js']], function (Chart, U) {\n /* *\n *\n * Highcharts module to hide overlapping data labels.\n * This module is included in Highcharts.\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { addEvent, fireEvent, isArray, isNumber, objectEach, pick } = U;\n /**\n * Internal type\n * @private\n */\n /* eslint-disable no-invalid-this */\n // Collect potensial overlapping data labels. Stack labels probably don't need\n // to be considered because they are usually accompanied by data labels that lie\n // inside the columns.\n addEvent(Chart, 'render', function collectAndHide() {\n let chart = this, labels = [];\n // Consider external label collectors\n (this.labelCollectors || []).forEach(function (collector) {\n labels = labels.concat(collector());\n });\n (this.yAxis || []).forEach(function (yAxis) {\n if (yAxis.stacking &&\n yAxis.options.stackLabels &&\n !yAxis.options.stackLabels.allowOverlap) {\n objectEach(yAxis.stacking.stacks, function (stack) {\n objectEach(stack, function (stackItem) {\n if (stackItem.label) {\n labels.push(stackItem.label);\n }\n });\n });\n }\n });\n (this.series || []).forEach(function (series) {\n const dlOptions = series.options.dataLabels;\n if (series.visible &&\n !(dlOptions.enabled === false && !series._hasPointLabels)) { // #3866\n const push = (points) => points.forEach((point) => {\n if (point.visible) {\n const dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n dataLabels.forEach(function (label) {\n const options = label.options;\n label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs && point.shapeArgs.height); // #4118\n if (!options.allowOverlap) {\n labels.push(label);\n }\n else { // #13449\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n hideOrShow(label, chart);\n }\n });\n }\n });\n push(series.nodes || []);\n push(series.points);\n }\n });\n this.hideOverlappingLabels(labels);\n });\n /**\n * Hide overlapping labels. Labels are moved and faded in and out on zoom to\n * provide a smooth visual imression.\n *\n * @private\n * @function Highcharts.Chart#hideOverlappingLabels\n * @param {Array} labels\n * Rendered data labels\n * @requires modules/overlapping-datalabels\n */\n Chart.prototype.hideOverlappingLabels = function (labels) {\n let chart = this, len = labels.length, ren = chart.renderer, label, i, j, label1, label2, box1, box2, isLabelAffected = false, isIntersectRect = function (box1, box2) {\n return !(box2.x >= box1.x + box1.width ||\n box2.x + box2.width <= box1.x ||\n box2.y >= box1.y + box1.height ||\n box2.y + box2.height <= box1.y);\n }, \n // Get the box with its position inside the chart, as opposed to getBBox\n // that only reports the position relative to the parent.\n getAbsoluteBox = function (label) {\n let pos, parent, bBox, \n // Substract the padding if no background or border (#4333)\n padding = label.box ? 0 : (label.padding || 0), lineHeightCorrection = 0, xOffset = 0, boxWidth, alignValue;\n if (label &&\n (!label.alignAttr || label.placed)) {\n pos = label.alignAttr || {\n x: label.attr('x'),\n y: label.attr('y')\n };\n parent = label.parentGroup;\n // Get width and height if pure text nodes (stack labels)\n if (!label.width) {\n bBox = label.getBBox();\n label.width = bBox.width;\n label.height = bBox.height;\n // Labels positions are computed from top left corner, so we\n // need to substract the text height from text nodes too.\n lineHeightCorrection = ren.fontMetrics(label.element).h;\n }\n boxWidth = label.width - 2 * padding;\n alignValue = {\n left: '0',\n center: '0.5',\n right: '1'\n }[label.alignValue];\n if (alignValue) {\n xOffset = +alignValue * boxWidth;\n }\n else if (isNumber(label.x) &&\n Math.round(label.x) !== label.translateX) {\n xOffset = label.x - label.translateX;\n }\n return {\n x: pos.x + (parent.translateX || 0) + padding -\n (xOffset || 0),\n y: pos.y + (parent.translateY || 0) + padding -\n lineHeightCorrection,\n width: label.width - 2 * padding,\n height: label.height - 2 * padding\n };\n }\n };\n for (i = 0; i < len; i++) {\n label = labels[i];\n if (label) {\n // Mark with initial opacity\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n label.absoluteBox = getAbsoluteBox(label);\n }\n }\n // Prevent a situation in a gradually rising slope, that each label will\n // hide the previous one because the previous one always has lower rank.\n labels.sort(function (a, b) {\n return (b.labelrank || 0) - (a.labelrank || 0);\n });\n // Detect overlapping labels\n for (i = 0; i < len; i++) {\n label1 = labels[i];\n box1 = label1 && label1.absoluteBox;\n for (j = i + 1; j < len; ++j) {\n label2 = labels[j];\n box2 = label2 && label2.absoluteBox;\n if (box1 &&\n box2 &&\n label1 !== label2 && // #6465, polar chart with connectEnds\n label1.newOpacity !== 0 &&\n label2.newOpacity !== 0 &&\n // #15863 dataLabels are no longer hidden by translation\n label1.visibility !== 'hidden' &&\n label2.visibility !== 'hidden') {\n if (isIntersectRect(box1, box2)) {\n (label1.labelrank < label2.labelrank ? label1 : label2)\n .newOpacity = 0;\n }\n }\n }\n }\n // Hide or show\n labels.forEach(function (label) {\n if (hideOrShow(label, chart)) {\n isLabelAffected = true;\n }\n });\n if (isLabelAffected) {\n fireEvent(chart, 'afterHideAllOverlappingLabels');\n }\n };\n /**\n * Hide or show labels based on opacity.\n *\n * @private\n * @function hideOrShow\n * @param {Highcharts.SVGElement} label\n * The label.\n * @param {Highcharts.Chart} chart\n * The chart that contains the label.\n * @return {boolean}\n * Whether label is affected\n */\n function hideOrShow(label, chart) {\n let complete, newOpacity, isLabelAffected = false;\n if (label) {\n newOpacity = label.newOpacity;\n if (label.oldOpacity !== newOpacity) {\n // Make sure the label is completely hidden to avoid catching clicks\n // (#4362)\n if (label.alignAttr && label.placed) { // data labels\n label[newOpacity ? 'removeClass' : 'addClass']('highcharts-data-label-hidden');\n complete = function () {\n if (!chart.styledMode) {\n label.css({\n pointerEvents: newOpacity ? 'auto' : 'none'\n });\n }\n };\n isLabelAffected = true;\n // Animate or set the opacity\n label.alignAttr.opacity = newOpacity;\n label[label.isOld ? 'animate' : 'attr'](label.alignAttr, null, complete);\n fireEvent(chart, 'afterHideOverlappingLabel');\n }\n else { // other labels, tick labels\n label.attr({\n opacity: newOpacity\n });\n }\n }\n label.isOld = true;\n }\n return isLabelAffected;\n }\n\n });\n _registerModule(_modules, 'Extensions/BorderRadius.js', [_modules['Core/Defaults.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (D, Series, SeriesRegistry, SVGElement, SVGRenderer, U) {\n /* *\n *\n * Highcharts Border Radius module\n *\n * Author: Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { defaultOptions } = D;\n const { seriesTypes } = SeriesRegistry;\n const { addEvent, extend, isObject, merge, relativeLength } = U;\n /* *\n *\n * Constants\n *\n * */\n const defaultBorderRadiusOptions = {\n radius: 0,\n scope: 'stack',\n where: void 0\n };\n const optionsToObject = (options, seriesBROptions) => {\n if (!isObject(options)) {\n options = { radius: options || 0 };\n }\n return merge(defaultBorderRadiusOptions, seriesBROptions, options);\n };\n const applyBorderRadius = (path, i, r) => {\n const a = path[i];\n let b = path[i + 1];\n if (b[0] === 'Z') {\n b = path[0];\n }\n let line, arc, fromLineToArc;\n // From straight line to arc\n if ((a[0] === 'M' || a[0] === 'L') && b[0] === 'A') {\n line = a;\n arc = b;\n fromLineToArc = true;\n // From arc to straight line\n }\n else if (a[0] === 'A' && (b[0] === 'M' || b[0] === 'L')) {\n line = b;\n arc = a;\n }\n if (line && arc && arc.params) {\n const bigR = arc[1], \n // In our use cases, outer pie slice arcs are clockwise and inner\n // arcs (donut/sunburst etc) are anti-clockwise\n clockwise = arc[5], params = arc.params, { start, end, cx, cy } = params;\n // Some geometric constants\n const relativeR = clockwise ? (bigR - r) : (bigR + r), \n // The angle, on the big arc, that the border radius arc takes up\n angleOfBorderRadius = relativeR ? Math.asin(r / relativeR) : 0, angleOffset = clockwise ?\n angleOfBorderRadius :\n -angleOfBorderRadius, \n // The distance along the radius of the big arc to the starting\n // point of the small border radius arc\n distanceBigCenterToStartArc = (Math.cos(angleOfBorderRadius) *\n relativeR);\n // From line to arc\n if (fromLineToArc) {\n // Update the cache\n params.start = start + angleOffset;\n // First move to the start position at the radial line. We want to\n // start one borderRadius closer to the center.\n line[1] = cx + distanceBigCenterToStartArc * Math.cos(start);\n line[2] = cy + distanceBigCenterToStartArc * Math.sin(start);\n // Now draw an arc towards the point where the small circle touches\n // the great circle.\n path.splice(i + 1, 0, [\n 'A',\n r,\n r,\n 0,\n 0,\n 1,\n cx + bigR * Math.cos(params.start),\n cy + bigR * Math.sin(params.start)\n ]);\n // From arc to line\n }\n else {\n // Update the cache\n params.end = end - angleOffset;\n // End the big arc a bit earlier\n arc[6] = cx + bigR * Math.cos(params.end);\n arc[7] = cy + bigR * Math.sin(params.end);\n // Draw a small arc towards a point on the end angle, but one\n // borderRadius closer to the center relative to the perimeter.\n path.splice(i + 1, 0, [\n 'A',\n r,\n r,\n 0,\n 0,\n 1,\n cx + distanceBigCenterToStartArc * Math.cos(end),\n cy + distanceBigCenterToStartArc * Math.sin(end)\n ]);\n }\n // Long or short arc must be reconsidered because we have modified the\n // start and end points\n arc[4] = Math.abs(params.end - params.start) < Math.PI ? 0 : 1;\n }\n };\n /* *\n *\n * Modifications\n *\n * */\n // Check if the module has already been imported\n // @todo implement as composition\n if (SVGElement.symbolCustomAttribs.indexOf('borderRadius') === -1) {\n SVGElement.symbolCustomAttribs.push('borderRadius', 'brBoxHeight', 'brBoxY');\n // Extend arc with borderRadius\n const arc = SVGRenderer.prototype.symbols.arc;\n SVGRenderer.prototype.symbols.arc = function (x, y, w, h, options = {}) {\n const path = arc(x, y, w, h, options), { innerR = 0, r = w, start = 0, end = 0 } = options;\n if (options.open || !options.borderRadius) {\n return path;\n }\n const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius || 0, r - innerR), \n // Cap to half the sector radius\n (r - innerR) / 2, \n // For smaller pie slices, cap to the largest small circle that\n // can be fitted within the sector\n (r * sinHalfAlpha) / (1 + sinHalfAlpha)), 0), \n // For the inner radius, we need an extra cap because the inner arc\n // is shorter than the outer arc\n innerBorderRadius = Math.min(borderRadius, 2 * (alpha / Math.PI) * innerR);\n // Apply turn-by-turn border radius. Start at the end since we're\n // splicing in arc segments.\n let i = path.length - 1;\n while (i--) {\n applyBorderRadius(path, i, i > 1 ? innerBorderRadius : borderRadius);\n }\n return path;\n };\n // Extend roundedRect with individual cutting through rOffset\n const roundedRect = SVGRenderer.prototype.symbols.roundedRect;\n SVGRenderer.prototype.symbols.roundedRect = function (x, y, width, height, options = {}) {\n const path = roundedRect(x, y, width, height, options), { r = 0, brBoxHeight = height, brBoxY = y } = options, brOffsetTop = y - brBoxY, brOffsetBtm = (brBoxY + brBoxHeight) - (y + height), \n // When the distance to the border-radius box is greater than the r\n // itself, it means no border radius. The -0.1 accounts for float\n // rounding errors.\n rTop = (brOffsetTop - r) > -0.1 ? 0 : r, rBtm = (brOffsetBtm - r) > -0.1 ? 0 : r, cutTop = Math.max(rTop && brOffsetTop, 0), cutBtm = Math.max(rBtm && brOffsetBtm, 0);\n /*\n\n The naming of control points:\n\n / a -------- b \\\n / \\\n h c\n | |\n | |\n | |\n g d\n \\ /\n \\ f -------- e /\n\n */\n const a = [x + rTop, y], b = [x + width - rTop, y], c = [x + width, y + rTop], d = [\n x + width, y + height - rBtm\n ], e = [\n x + width - rBtm,\n y + height\n ], f = [x + rBtm, y + height], g = [x, y + height - rBtm], h = [x, y + rTop];\n const applyPythagoras = (r, altitude) => Math.sqrt(Math.pow(r, 2) - Math.pow(altitude, 2));\n // Inside stacks, cut off part of the top\n if (cutTop) {\n const base = applyPythagoras(rTop, rTop - cutTop);\n a[0] -= base;\n b[0] += base;\n c[1] = h[1] = y + rTop - cutTop;\n }\n // Column is lower than the radius. Cut off bottom inside the top\n // radius.\n if (height < rTop - cutTop) {\n const base = applyPythagoras(rTop, rTop - cutTop - height);\n c[0] = d[0] = x + width - rTop + base;\n e[0] = Math.min(c[0], e[0]);\n f[0] = Math.max(d[0], f[0]);\n g[0] = h[0] = x + rTop - base;\n c[1] = h[1] = y + height;\n }\n // Inside stacks, cut off part of the bottom\n if (cutBtm) {\n const base = applyPythagoras(rBtm, rBtm - cutBtm);\n e[0] += base;\n f[0] -= base;\n d[1] = g[1] = y + height - rBtm + cutBtm;\n }\n // Cut off top inside the bottom radius\n if (height < rBtm - cutBtm) {\n const base = applyPythagoras(rBtm, rBtm - cutBtm - height);\n c[0] = d[0] = x + width - rBtm + base;\n b[0] = Math.min(c[0], b[0]);\n a[0] = Math.max(d[0], a[0]);\n g[0] = h[0] = x + rBtm - base;\n d[1] = g[1] = y;\n }\n // Preserve the box for data labels\n path.length = 0;\n path.push(['M', ...a], \n // top side\n ['L', ...b], \n // top right corner\n ['A', rTop, rTop, 0, 0, 1, ...c], \n // right side\n ['L', ...d], \n // bottom right corner\n ['A', rBtm, rBtm, 0, 0, 1, ...e], \n // bottom side\n ['L', ...f], \n // bottom left corner\n ['A', rBtm, rBtm, 0, 0, 1, ...g], \n // left side\n ['L', ...h], \n // top left corner\n ['A', rTop, rTop, 0, 0, 1, ...a], ['Z']);\n return path;\n };\n addEvent(seriesTypes.pie, 'afterTranslate', function () {\n const borderRadius = optionsToObject(this.options.borderRadius);\n for (const point of this.points) {\n const shapeArgs = point.shapeArgs;\n if (shapeArgs) {\n shapeArgs.borderRadius = relativeLength(borderRadius.radius, (shapeArgs.r || 0) - ((shapeArgs.innerR) || 0));\n }\n }\n });\n addEvent(Series, 'afterColumnTranslate', function () {\n var _a,\n _b;\n if (this.options.borderRadius &&\n !(this.chart.is3d && this.chart.is3d())) {\n const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = (_b = (_a = defaultOptions.plotOptions) === null || _a === void 0 ? void 0 : _a[this.type]) === null || _b === void 0 ? void 0 : _b.borderRadius, borderRadius = optionsToObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;\n for (const point of this.points) {\n const { shapeArgs } = point;\n if (point.shapeType === 'roundedRect' && shapeArgs) {\n const { width = 0, height = 0, y = 0 } = shapeArgs;\n let brBoxY = y, brBoxHeight = height;\n // It would be nice to refactor StackItem.getStackBox/\n // setOffset so that we could get a reliable box out of\n // it. Currently it is close if we remove the label\n // offset, but we still need to run crispCol and also\n // flip it if inverted, so atm it is simpler to do it\n // like the below.\n if (borderRadius.scope === 'stack' &&\n point.stackTotal) {\n const stackEnd = yAxis.translate(percent ? 100 : point.stackTotal, false, true, false, true), stackThreshold = yAxis.translate(options.threshold || 0, false, true, false, true), box = this.crispCol(0, Math.min(stackEnd, stackThreshold), 0, Math.abs(stackEnd - stackThreshold));\n brBoxY = box.y;\n brBoxHeight = box.height;\n }\n const flip = (point.negative ? -1 : 1) *\n (reversed ? -1 : 1) === -1;\n // Handle the where option\n let where = borderRadius.where;\n // Waterfall, hanging columns should have rounding on\n // all sides\n if (!where &&\n this.is('waterfall') &&\n Math.abs((point.yBottom || 0) -\n (this.translatedThreshold || 0)) > this.borderWidth) {\n where = 'all';\n }\n if (!where) {\n where = 'end';\n }\n // Get the radius\n const r = Math.min(relativeLength(borderRadius.radius, width), width / 2, \n // Cap to the height, but not if where is `end`\n where === 'all' ? height / 2 : Infinity) || 0;\n // If the `where` option is 'end', cut off the\n // rectangles by making the border-radius box one r\n // greater, so that the imaginary radius falls outside\n // the rectangle.\n if (where === 'end') {\n if (flip) {\n brBoxY -= r;\n brBoxHeight += r;\n }\n else {\n brBoxHeight += r;\n }\n }\n extend(shapeArgs, { brBoxHeight, brBoxY, r });\n }\n }\n }\n }, {\n // After columnrange and polar column modifications\n order: 9\n });\n }\n /* *\n *\n * Default Export\n *\n * */\n const BorderRadius = {\n optionsToObject\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Detailed options for border radius.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderradius/\n * Rounded columns\n * @sample highcharts/plotoptions/series-border-radius\n * Column and pie with rounded border\n *\n * @interface Highcharts.BorderRadiusOptionsObject\n */ /**\n * The border radius. A number signifies pixels. A percentage string, like for\n * example `50%`, signifies a relative size. For columns this is relative to the\n * column width, for pies it is relative to the radius and the inner radius.\n *\n * @name Highcharts.BorderRadiusOptionsObject#radius\n * @type {string|number}\n */ /**\n * The scope of the rounding for column charts. In a stacked column chart, the\n * value `point` means each single point will get rounded corners. The value\n * `stack` means the rounding will apply to the full stack, so that only points\n * close to the top or bottom will receive rounding.\n *\n * @name Highcharts.BorderRadiusOptionsObject#scope\n * @validvalue [\"point\", \"stack\"]\n * @type {string}\n */ /**\n * For column charts, where in the point or stack to apply rounding. The `end`\n * value means only those corners at the point value will be rounded, leaving\n * the corners at the base or threshold unrounded. This is the most intuitive\n * behaviour. The `all` value means also the base will be rounded.\n *\n * @name Highcharts.BorderRadiusOptionsObject#where\n * @validvalue [\"all\", \"end\"]\n * @type {string}\n * @default end\n */\n (''); // keeps doclets above in JS file\n\n return BorderRadius;\n });\n _registerModule(_modules, 'Core/Responsive.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { extend, find, isArray, isObject, merge, objectEach, pick, splat, uniqueKey } = U;\n /* *\n *\n * Composition\n *\n * */\n var Responsive;\n (function (Responsive) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (U.pushUnique(composedMembers, ChartClass)) {\n extend(ChartClass.prototype, {\n currentOptions,\n matchResponsiveRule,\n setResponsive\n });\n }\n return ChartClass;\n }\n Responsive.compose = compose;\n /**\n * Get the current values for a given set of options. Used before we\n * update the chart with a new responsiveness rule.\n *\n * @todo Restore axis options (by id?). The matching of items in\n * collections bears resemblance to the oneToOne matching in\n * Chart.update. Probably we can refactor out that matching and reuse it\n * in both functions.\n *\n * @private\n * @function Highcharts.Chart#currentOptions\n */\n function currentOptions(options) {\n const chart = this, ret = {};\n /**\n * Recurse over a set of options and its current values,\n * and store the current values in the ret object.\n */\n function getCurrent(options, curr, ret, depth) {\n let i;\n objectEach(options, function (val, key) {\n if (!depth &&\n chart.collectionsWithUpdate.indexOf(key) > -1 &&\n curr[key]) {\n val = splat(val);\n ret[key] = [];\n // Iterate over collections like series, xAxis or yAxis\n // and map the items by index.\n for (i = 0; i < Math.max(val.length, curr[key].length); i++) {\n // Item exists in current data (#6347)\n if (curr[key][i]) {\n // If the item is missing from the new data, we\n // need to save the whole config structure. Like\n // when responsively updating from a dual axis\n // layout to a single axis and back (#13544).\n if (val[i] === void 0) {\n ret[key][i] = curr[key][i];\n // Otherwise, proceed\n }\n else {\n ret[key][i] = {};\n getCurrent(val[i], curr[key][i], ret[key][i], depth + 1);\n }\n }\n }\n }\n else if (isObject(val)) {\n ret[key] = isArray(val) ? [] : {};\n getCurrent(val, curr[key] || {}, ret[key], depth + 1);\n }\n else if (typeof curr[key] === 'undefined') { // #10286\n ret[key] = null;\n }\n else {\n ret[key] = curr[key];\n }\n });\n }\n getCurrent(options, this.options, ret, 0);\n return ret;\n }\n /**\n * Handle a single responsiveness rule.\n *\n * @private\n * @function Highcharts.Chart#matchResponsiveRule\n * @param {Highcharts.ResponsiveRulesOptions} rule\n * @param {Array} matches\n */\n function matchResponsiveRule(rule, matches) {\n const condition = rule.condition, fn = condition.callback || function () {\n return (this.chartWidth <= pick(condition.maxWidth, Number.MAX_VALUE) &&\n this.chartHeight <= pick(condition.maxHeight, Number.MAX_VALUE) &&\n this.chartWidth >= pick(condition.minWidth, 0) &&\n this.chartHeight >= pick(condition.minHeight, 0));\n };\n if (fn.call(this)) {\n matches.push(rule._id);\n }\n }\n /**\n * Update the chart based on the current chart/document size and options\n * for responsiveness.\n *\n * @private\n * @function Highcharts.Chart#setResponsive\n * @param {boolean} [redraw=true]\n * @param {boolean} [reset=false]\n * Reset by un-applying all rules. Chart.update resets all rules before\n * applying updated options.\n */\n function setResponsive(redraw, reset) {\n const options = this.options.responsive, currentResponsive = this.currentResponsive;\n let ruleIds = [], undoOptions;\n if (!reset && options && options.rules) {\n options.rules.forEach((rule) => {\n if (typeof rule._id === 'undefined') {\n rule._id = uniqueKey();\n }\n this.matchResponsiveRule(rule, ruleIds /* , redraw */);\n }, this);\n }\n // Merge matching rules\n const mergedOptions = merge(...ruleIds\n .map((ruleId) => find((options || {}).rules || [], (rule) => (rule._id === ruleId)))\n .map((rule) => (rule && rule.chartOptions)));\n mergedOptions.isResponsiveOptions = true;\n // Stringified key for the rules that currently apply.\n ruleIds = (ruleIds.toString() || void 0);\n const currentRuleIds = (currentResponsive && currentResponsive.ruleIds);\n // Changes in what rules apply\n if (ruleIds !== currentRuleIds) {\n // Undo previous rules. Before we apply a new set of rules, we\n // need to roll back completely to base options (#6291).\n if (currentResponsive) {\n this.update(currentResponsive.undoOptions, redraw, true);\n }\n if (ruleIds) {\n // Get undo-options for matching rules\n undoOptions = this.currentOptions(mergedOptions);\n undoOptions.isResponsiveOptions = true;\n this.currentResponsive = {\n ruleIds: ruleIds,\n mergedOptions: mergedOptions,\n undoOptions: undoOptions\n };\n this.update(mergedOptions, redraw, true);\n }\n else {\n this.currentResponsive = void 0;\n }\n }\n }\n })(Responsive || (Responsive = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A callback function to gain complete control on when the responsive rule\n * applies.\n *\n * @callback Highcharts.ResponsiveCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * Chart context.\n *\n * @return {boolean}\n * Return `true` if it applies.\n */\n (''); // keeps doclets above in JS file\n /* *\n *\n * API Options\n *\n * */\n /**\n * Allows setting a set of rules to apply for different screen or chart\n * sizes. Each rule specifies additional chart options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @since 5.0.0\n * @apioption responsive\n */\n /**\n * A set of rules for responsive settings. The rules are executed from\n * the top down.\n *\n * @sample {highcharts} highcharts/responsive/axis/\n * Axis changes\n * @sample {highstock} highcharts/responsive/axis/\n * Axis changes\n * @sample {highmaps} highcharts/responsive/axis/\n * Axis changes\n *\n * @type {Array<*>}\n * @since 5.0.0\n * @apioption responsive.rules\n */\n /**\n * A full set of chart options to apply as overrides to the general\n * chart options. The chart options are applied when the given rule\n * is active.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](#xAxis), [yAxis](#yAxis) or [series](#series). For these\n * collections, an `id` option is used to map the new option set to\n * an existing object. If an existing object of the same id is not found,\n * the item of the same indexupdated. So for example, setting `chartOptions`\n * with two series items without an `id`, will cause the existing chart's\n * two series to be updated with respective options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @type {Highcharts.Options}\n * @since 5.0.0\n * @apioption responsive.rules.chartOptions\n */\n /**\n * Under which conditions the rule applies.\n *\n * @since 5.0.0\n * @apioption responsive.rules.condition\n */\n /**\n * A callback function to gain complete control on when the responsive\n * rule applies. Return `true` if it applies. This opens for checking\n * against other metrics than the chart size, for example the document\n * size or other elements.\n *\n * @type {Highcharts.ResponsiveCallbackFunction}\n * @since 5.0.0\n * @context Highcharts.Chart\n * @apioption responsive.rules.condition.callback\n */\n /**\n * The responsive rule applies if the chart height is less than this.\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxHeight\n */\n /**\n * The responsive rule applies if the chart width is less than this.\n *\n * @sample highcharts/responsive/axis/\n * Max width is 500\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxWidth\n */\n /**\n * The responsive rule applies if the chart height is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minHeight\n */\n /**\n * The responsive rule applies if the chart width is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minWidth\n */\n (''); // keeps doclets above in JS file\n\n return Responsive;\n });\n _registerModule(_modules, 'masters/highcharts.src.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js'], _modules['Core/Defaults.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Renderer/HTML/HTMLElement.js'], _modules['Core/Renderer/HTML/HTMLRenderer.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Axis/LogarithmicAxis.js'], _modules['Core/Axis/PlotLineOrBand/PlotLineOrBand.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Tooltip.js'], _modules['Core/Series/Point.js'], _modules['Core/Pointer.js'], _modules['Core/Legend/Legend.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Axis/Stacking/StackingAxis.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/Column/ColumnDataLabel.js'], _modules['Series/Pie/PieSeries.js'], _modules['Series/Pie/PieDataLabel.js'], _modules['Core/Series/DataLabel.js'], _modules['Core/Responsive.js'], _modules['Core/Color/Color.js'], _modules['Core/Time.js']], function (Highcharts, Utilities, Defaults, Fx, Animation, AST, FormatUtilities, RendererUtilities, SVGElement, SVGRenderer, HTMLElement, HTMLRenderer, Axis, DateTimeAxis, LogarithmicAxis, PlotLineOrBand, Tick, Tooltip, Point, Pointer, Legend, Chart, StackingAxis, StackItem, Series, SeriesRegistry, ColumnSeries, ColumnDataLabel, PieSeries, PieDataLabel, DataLabel, Responsive, Color, Time) {\n\n const G = Highcharts;\n // Animation\n G.animate = Animation.animate;\n G.animObject = Animation.animObject;\n G.getDeferredAnimation = Animation.getDeferredAnimation;\n G.setAnimation = Animation.setAnimation;\n G.stop = Animation.stop;\n G.timers = Fx.timers;\n // Classes\n G.AST = AST;\n G.Axis = Axis;\n G.Chart = Chart;\n G.chart = Chart.chart;\n G.Fx = Fx;\n G.Legend = Legend;\n G.PlotLineOrBand = PlotLineOrBand;\n G.Point = Point;\n G.Pointer = Pointer;\n G.Series = Series;\n G.StackItem = StackItem;\n G.SVGElement = SVGElement;\n G.SVGRenderer = SVGRenderer;\n G.Tick = Tick;\n G.Time = Time;\n G.Tooltip = Tooltip;\n // Color\n G.Color = Color;\n G.color = Color.parse;\n // Compositions\n HTMLRenderer.compose(SVGRenderer);\n HTMLElement.compose(SVGElement);\n Pointer.compose(Chart);\n Legend.compose(Chart);\n // DefaultOptions\n G.defaultOptions = Defaults.defaultOptions;\n G.getOptions = Defaults.getOptions;\n G.time = Defaults.defaultTime;\n G.setOptions = Defaults.setOptions;\n // Format Utilities\n G.dateFormat = FormatUtilities.dateFormat;\n G.format = FormatUtilities.format;\n G.numberFormat = FormatUtilities.numberFormat;\n // Utilities\n G.addEvent = Utilities.addEvent;\n G.arrayMax = Utilities.arrayMax;\n G.arrayMin = Utilities.arrayMin;\n G.attr = Utilities.attr;\n G.clearTimeout = Utilities.clearTimeout;\n G.correctFloat = Utilities.correctFloat;\n G.createElement = Utilities.createElement;\n G.css = Utilities.css;\n G.defined = Utilities.defined;\n G.destroyObjectProperties = Utilities.destroyObjectProperties;\n G.discardElement = Utilities.discardElement;\n G.distribute = RendererUtilities.distribute;\n G.erase = Utilities.erase;\n G.error = Utilities.error;\n G.extend = Utilities.extend;\n G.extendClass = Utilities.extendClass;\n G.find = Utilities.find;\n G.fireEvent = Utilities.fireEvent;\n G.getMagnitude = Utilities.getMagnitude;\n G.getStyle = Utilities.getStyle;\n G.inArray = Utilities.inArray;\n G.isArray = Utilities.isArray;\n G.isClass = Utilities.isClass;\n G.isDOMElement = Utilities.isDOMElement;\n G.isFunction = Utilities.isFunction;\n G.isNumber = Utilities.isNumber;\n G.isObject = Utilities.isObject;\n G.isString = Utilities.isString;\n G.keys = Utilities.keys;\n G.merge = Utilities.merge;\n G.normalizeTickInterval = Utilities.normalizeTickInterval;\n G.objectEach = Utilities.objectEach;\n G.offset = Utilities.offset;\n G.pad = Utilities.pad;\n G.pick = Utilities.pick;\n G.pInt = Utilities.pInt;\n G.relativeLength = Utilities.relativeLength;\n G.removeEvent = Utilities.removeEvent;\n G.seriesType = SeriesRegistry.seriesType;\n G.splat = Utilities.splat;\n G.stableSort = Utilities.stableSort;\n G.syncTimeout = Utilities.syncTimeout;\n G.timeUnits = Utilities.timeUnits;\n G.uniqueKey = Utilities.uniqueKey;\n G.useSerialIds = Utilities.useSerialIds;\n G.wrap = Utilities.wrap;\n // Compositions\n ColumnDataLabel.compose(ColumnSeries);\n DataLabel.compose(Series);\n DateTimeAxis.compose(Axis);\n LogarithmicAxis.compose(Axis);\n PieDataLabel.compose(PieSeries);\n PlotLineOrBand.compose(Axis);\n Responsive.compose(Chart);\n StackingAxis.compose(Axis, Chart, Series);\n Tooltip.compose(Pointer);\n // Default Export\n\n return G;\n });\n _modules['masters/highcharts.src.js']._modules = _modules;\n return _modules['masters/highcharts.src.js'];\n}));","/**\n * @license Highcharts JS v11.0.1 (2023-05-08)\n *\n * Exporting module\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function (factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/modules/exporting', ['highcharts'], function (Highcharts) {\n factory(Highcharts);\n factory.Highcharts = Highcharts;\n return factory;\n });\n } else {\n factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);\n }\n}(function (Highcharts) {\n 'use strict';\n var _modules = Highcharts ? Highcharts._modules : {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n\n if (typeof CustomEvent === 'function') {\n window.dispatchEvent(\n new CustomEvent(\n 'HighchartsModuleLoaded',\n { detail: { path: path, module: obj[path] }\n })\n );\n }\n }\n }\n _registerModule(_modules, 'Core/Chart/ChartNavigationComposition.js', [], function () {\n /**\n *\n * (c) 2010-2021 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Composition\n *\n * */\n var ChartNavigationComposition;\n (function (ChartNavigationComposition) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(chart) {\n if (!chart.navigation) {\n chart.navigation = new Additions(chart);\n }\n return chart;\n }\n ChartNavigationComposition.compose = compose;\n /* *\n *\n * Class\n *\n * */\n /**\n * Initializes `chart.navigation` object which delegates `update()` methods\n * to all other common classes (used in exporting and navigationBindings).\n * @private\n */\n class Additions {\n /* *\n *\n * Constructor\n *\n * */\n constructor(chart) {\n this.updates = [];\n this.chart = chart;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Registers an `update()` method in the `chart.navigation` object.\n *\n * @private\n * @param {UpdateFunction} updateFn\n * The `update()` method that will be called in `chart.update()`.\n */\n addUpdate(updateFn) {\n this.chart.navigation.updates.push(updateFn);\n }\n /**\n * @private\n */\n update(options, redraw) {\n this.updates.forEach((updateFn) => {\n updateFn.call(this.chart, options, redraw);\n });\n }\n }\n ChartNavigationComposition.Additions = Additions;\n })(ChartNavigationComposition || (ChartNavigationComposition = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ChartNavigationComposition;\n });\n _registerModule(_modules, 'Extensions/Exporting/ExportingDefaults.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { isTouchDevice } = H;\n /* *\n *\n * API Options\n *\n * */\n // Add the export related options\n /**\n * Options for the exporting module. For an overview on the matter, see\n * [the docs](https://www.highcharts.com/docs/export-module/export-module-overview).\n *\n * @requires modules/exporting\n * @optionparent exporting\n */\n const exporting = {\n /**\n * Experimental setting to allow HTML inside the chart (added through\n * the `useHTML` options), directly in the exported image. This allows\n * you to preserve complicated HTML structures like tables or bi-directional\n * text in exported charts.\n *\n * Disclaimer: The HTML is rendered in a `foreignObject` tag in the\n * generated SVG. The official export server is based on PhantomJS,\n * which supports this, but other SVG clients, like Batik, does not\n * support it. This also applies to downloaded SVG that you want to\n * open in a desktop client.\n *\n * @type {boolean}\n * @default false\n * @since 4.1.8\n * @apioption exporting.allowHTML\n */\n /**\n * Allows the end user to sort the data table by clicking on column headers.\n *\n * @since 10.3.3\n * @apioption exporting.allowTableSorting\n */\n allowTableSorting: true,\n /**\n * Additional chart options to be merged into the chart before exporting to\n * an image format. This does not apply to printing the chart via the export\n * menu.\n *\n * For example, a common use case is to add data labels to improve\n * readability of the exported chart, or to add a printer-friendly color\n * scheme to exported PDFs.\n *\n * @sample {highcharts} highcharts/exporting/chartoptions-data-labels/\n * Added data labels\n * @sample {highstock} highcharts/exporting/chartoptions-data-labels/\n * Added data labels\n *\n * @type {Highcharts.Options}\n * @apioption exporting.chartOptions\n */\n /**\n * Whether to enable the exporting module. Disabling the module will\n * hide the context button, but API methods will still be available.\n *\n * @sample {highcharts} highcharts/exporting/enabled-false/\n * Exporting module is loaded but disabled\n * @sample {highstock} highcharts/exporting/enabled-false/\n * Exporting module is loaded but disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.0\n * @apioption exporting.enabled\n */\n /**\n * Function to call if the offline-exporting module fails to export\n * a chart on the client side, and [fallbackToExportServer](\n * #exporting.fallbackToExportServer) is disabled. If left undefined, an\n * exception is thrown instead. Receives two parameters, the exporting\n * options, and the error from the module.\n *\n * @see [fallbackToExportServer](#exporting.fallbackToExportServer)\n *\n * @type {Highcharts.ExportingErrorCallbackFunction}\n * @since 5.0.0\n * @requires modules/exporting\n * @requires modules/offline-exporting\n * @apioption exporting.error\n */\n /**\n * Whether or not to fall back to the export server if the offline-exporting\n * module is unable to export the chart on the client side. This happens for\n * certain browsers, and certain features (e.g.\n * [allowHTML](#exporting.allowHTML)), depending on the image type exporting\n * to. For very complex charts, it is possible that export can fail in\n * browsers that don't support Blob objects, due to data URL length limits.\n * It is recommended to define the [exporting.error](#exporting.error)\n * handler if disabling fallback, in order to notify users in case export\n * fails.\n *\n * @type {boolean}\n * @default true\n * @since 4.1.8\n * @requires modules/exporting\n * @requires modules/offline-exporting\n * @apioption exporting.fallbackToExportServer\n */\n /**\n * The filename, without extension, to use for the exported chart.\n *\n * @sample {highcharts} highcharts/exporting/filename/\n * Custom file name\n * @sample {highstock} highcharts/exporting/filename/\n * Custom file name\n *\n * @type {string}\n * @default chart\n * @since 2.0\n * @apioption exporting.filename\n */\n /**\n * An object containing additional key value data for the POST form that\n * sends the SVG to the export server. For example, a `target` can be set to\n * make sure the generated image is received in another frame, or a custom\n * `enctype` or `encoding` can be set.\n *\n * @type {Highcharts.HTMLAttributes}\n * @since 3.0.8\n * @apioption exporting.formAttributes\n */\n /**\n * Path where Highcharts will look for export module dependencies to\n * load on demand if they don't already exist on `window`. Should currently\n * point to location of [CanVG](https://github.com/canvg/canvg) library,\n * [jsPDF](https://github.com/parallax/jsPDF) and\n * [svg2pdf.js](https://github.com/yWorks/svg2pdf.js), required for client\n * side export in certain browsers.\n *\n * @type {string}\n * @default https://code.highcharts.com/{version}/lib\n * @since 5.0.0\n * @apioption exporting.libURL\n */\n /**\n * Analogous to [sourceWidth](#exporting.sourceWidth).\n *\n * @type {number}\n * @since 3.0\n * @apioption exporting.sourceHeight\n */\n /**\n * The width of the original chart when exported, unless an explicit\n * [chart.width](#chart.width) is set, or a pixel width is set on the\n * container. The width exported raster image is then multiplied by\n * [scale](#exporting.scale).\n *\n * @sample {highcharts} highcharts/exporting/sourcewidth/\n * Source size demo\n * @sample {highstock} highcharts/exporting/sourcewidth/\n * Source size demo\n * @sample {highmaps} maps/exporting/sourcewidth/\n * Source size demo\n *\n * @type {number}\n * @since 3.0\n * @apioption exporting.sourceWidth\n */\n /**\n * The pixel width of charts exported to PNG or JPG. As of Highcharts\n * 3.0, the default pixel width is a function of the [chart.width](\n * #chart.width) or [exporting.sourceWidth](#exporting.sourceWidth) and the\n * [exporting.scale](#exporting.scale).\n *\n * @sample {highcharts} highcharts/exporting/width/\n * Export to 200px wide images\n * @sample {highstock} highcharts/exporting/width/\n * Export to 200px wide images\n *\n * @type {number}\n * @since 2.0\n * @apioption exporting.width\n */\n /**\n * Default MIME type for exporting if `chart.exportChart()` is called\n * without specifying a `type` option. Possible values are `image/png`,\n * `image/jpeg`, `application/pdf` and `image/svg+xml`.\n *\n * @type {Highcharts.ExportingMimeTypeValue}\n * @since 2.0\n */\n type: 'image/png',\n /**\n * The URL for the server module converting the SVG string to an image\n * format. By default this points to Highchart's free web service.\n *\n * @since 2.0\n */\n url: 'https://export.highcharts.com/',\n /**\n * Settings for a custom font for the exported PDF, when using the\n * `offline-exporting` module. This is used for languages containing\n * non-ASCII characters, like Chinese, Russian, Japanese etc.\n *\n * As described in the [jsPDF\n * docs](https://github.com/parallax/jsPDF#use-of-unicode-characters--utf-8),\n * the 14 standard fonts in PDF are limited to the ASCII-codepage.\n * Therefore, in order to support other text in the exported PDF, one or\n * more TTF font files have to be passed on to the exporting module.\n *\n * See more in [the\n * docs](https://www.highcharts.com/docs/export-module/client-side-export).\n *\n * @sample {highcharts} highcharts/exporting/offline-download-pdffont/\n * Download PDF in a language containing non-Latin characters.\n *\n * @since 10.0.0\n * @requires modules/offline-exporting\n */\n pdfFont: {\n /**\n * The TTF font file for normal `font-style`. If font variations like\n * `bold` or `italic` are not defined, the `normal` font will be used\n * for those too.\n *\n * @type string|undefined\n */\n normal: void 0,\n /**\n * The TTF font file for bold text.\n *\n * @type string|undefined\n */\n bold: void 0,\n /**\n * The TTF font file for bold and italic text.\n *\n * @type string|undefined\n */\n bolditalic: void 0,\n /**\n * The TTF font file for italic text.\n *\n * @type string|undefined\n */\n italic: void 0\n },\n /**\n * When printing the chart from the menu item in the burger menu, if\n * the on-screen chart exceeds this width, it is resized. After printing\n * or cancelled, it is restored. The default width makes the chart\n * fit into typical paper format. Note that this does not affect the\n * chart when printing the web page as a whole.\n *\n * @since 4.2.5\n */\n printMaxWidth: 780,\n /**\n * Defines the scale or zoom factor for the exported image compared\n * to the on-screen display. While for instance a 600px wide chart\n * may look good on a website, it will look bad in print. The default\n * scale of 2 makes this chart export to a 1200px PNG or JPG.\n *\n * @see [chart.width](#chart.width)\n * @see [exporting.sourceWidth](#exporting.sourceWidth)\n *\n * @sample {highcharts} highcharts/exporting/scale/\n * Scale demonstrated\n * @sample {highstock} highcharts/exporting/scale/\n * Scale demonstrated\n * @sample {highmaps} maps/exporting/scale/\n * Scale demonstrated\n *\n * @since 3.0\n */\n scale: 2,\n /**\n * Options for the export related buttons, print and export. In addition\n * to the default buttons listed here, custom buttons can be added.\n * See [navigation.buttonOptions](#navigation.buttonOptions) for general\n * options.\n *\n * @type {Highcharts.Dictionary<*>}\n * @requires modules/exporting\n */\n buttons: {\n /**\n * Options for the export button.\n *\n * In styled mode, export button styles can be applied with the\n * `.highcharts-contextbutton` class.\n *\n * @declare Highcharts.ExportingButtonsOptionsObject\n * @extends navigation.buttonOptions\n * @requires modules/exporting\n */\n contextButton: {\n /**\n * A click handler callback to use on the button directly instead of\n * the popup menu.\n *\n * @sample highcharts/exporting/buttons-contextbutton-onclick/\n * Skip the menu and export the chart directly\n *\n * @type {Function}\n * @since 2.0\n * @apioption exporting.buttons.contextButton.onclick\n */\n /**\n * See [navigation.buttonOptions.symbolFill](\n * #navigation.buttonOptions.symbolFill).\n *\n * @type {Highcharts.ColorString}\n * @default #666666\n * @since 2.0\n * @apioption exporting.buttons.contextButton.symbolFill\n */\n /**\n * The horizontal position of the button relative to the `align`\n * option.\n *\n * @type {number}\n * @default -10\n * @since 2.0\n * @apioption exporting.buttons.contextButton.x\n */\n /**\n * The class name of the context button.\n */\n className: 'highcharts-contextbutton',\n /**\n * The class name of the menu appearing from the button.\n */\n menuClassName: 'highcharts-contextmenu',\n /**\n * The symbol for the button. Points to a definition function in\n * the `Highcharts.Renderer.symbols` collection. The default\n * `menu` function is part of the exporting module. Possible\n * values are \"circle\", \"square\", \"diamond\", \"triangle\",\n * \"triangle-down\", \"menu\", \"menuball\" or custom shape.\n *\n * @sample highcharts/exporting/buttons-contextbutton-symbol/\n * Use a circle for symbol\n * @sample highcharts/exporting/buttons-contextbutton-symbol-custom/\n * Custom shape as symbol\n *\n * @type {Highcharts.SymbolKeyValue|\"menu\"|\"menuball\"|string}\n * @since 2.0\n */\n symbol: 'menu',\n /**\n * The key to a [lang](#lang) option setting that is used for the\n * button's title tooltip. When the key is `contextButtonTitle`, it\n * refers to [lang.contextButtonTitle](#lang.contextButtonTitle)\n * that defaults to \"Chart context menu\".\n *\n * @since 6.1.4\n */\n titleKey: 'contextButtonTitle',\n /**\n * This option is deprecated, use\n * [titleKey](#exporting.buttons.contextButton.titleKey) instead.\n *\n * @deprecated\n * @type {string}\n * @apioption exporting.buttons.contextButton._titleKey\n */\n /**\n * A collection of strings pointing to config options for the menu\n * items. The config options are defined in the\n * `menuItemDefinitions` option.\n *\n * By default, there is the \"View in full screen\" and \"Print\" menu\n * items, plus one menu item for each of the available export types.\n *\n * @sample {highcharts} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n * @sample {highstock} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n * @sample {highmaps} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n *\n * @type {Array}\n * @default [\"viewFullscreen\", \"printChart\", \"separator\", \"downloadPNG\", \"downloadJPEG\", \"downloadPDF\", \"downloadSVG\"]\n * @since 2.0\n */\n menuItems: [\n 'viewFullscreen',\n 'printChart',\n 'separator',\n 'downloadPNG',\n 'downloadJPEG',\n 'downloadPDF',\n 'downloadSVG'\n ]\n }\n },\n /**\n * An object consisting of definitions for the menu items in the context\n * menu. Each key value pair has a `key` that is referenced in the\n * [menuItems](#exporting.buttons.contextButton.menuItems) setting,\n * and a `value`, which is an object with the following properties:\n *\n * - **onclick:** The click handler for the menu item\n *\n * - **text:** The text for the menu item\n *\n * - **textKey:** If internationalization is required, the key to a language\n * string\n *\n * Custom text for the \"exitFullScreen\" can be set only in lang options\n * (it is not a separate button).\n *\n * @sample {highcharts} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n * @sample {highstock} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n * @sample {highmaps} highcharts/exporting/menuitemdefinitions/\n * Menu item definitions\n *\n *\n * @type {Highcharts.Dictionary}\n * @default {\"viewFullscreen\": {}, \"printChart\": {}, \"separator\": {}, \"downloadPNG\": {}, \"downloadJPEG\": {}, \"downloadPDF\": {}, \"downloadSVG\": {}}\n * @since 5.0.13\n */\n menuItemDefinitions: {\n /**\n * @ignore\n */\n viewFullscreen: {\n textKey: 'viewFullscreen',\n onclick: function () {\n if (this.fullscreen) {\n this.fullscreen.toggle();\n }\n }\n },\n /**\n * @ignore\n */\n printChart: {\n textKey: 'printChart',\n onclick: function () {\n this.print();\n }\n },\n /**\n * @ignore\n */\n separator: {\n separator: true\n },\n /**\n * @ignore\n */\n downloadPNG: {\n textKey: 'downloadPNG',\n onclick: function () {\n this.exportChart();\n }\n },\n /**\n * @ignore\n */\n downloadJPEG: {\n textKey: 'downloadJPEG',\n onclick: function () {\n this.exportChart({\n type: 'image/jpeg'\n });\n }\n },\n /**\n * @ignore\n */\n downloadPDF: {\n textKey: 'downloadPDF',\n onclick: function () {\n this.exportChart({\n type: 'application/pdf'\n });\n }\n },\n /**\n * @ignore\n */\n downloadSVG: {\n textKey: 'downloadSVG',\n onclick: function () {\n this.exportChart({\n type: 'image/svg+xml'\n });\n }\n }\n }\n };\n // Add language\n /**\n * @optionparent lang\n */\n const lang = {\n /**\n * Exporting module only. The text for the menu item to view the chart\n * in full screen.\n *\n * @since 8.0.1\n */\n viewFullscreen: 'View in full screen',\n /**\n * Exporting module only. The text for the menu item to exit the chart\n * from full screen.\n *\n * @since 8.0.1\n */\n exitFullscreen: 'Exit from full screen',\n /**\n * Exporting module only. The text for the menu item to print the chart.\n *\n * @since 3.0.1\n * @requires modules/exporting\n */\n printChart: 'Print chart',\n /**\n * Exporting module only. The text for the PNG download menu item.\n *\n * @since 2.0\n * @requires modules/exporting\n */\n downloadPNG: 'Download PNG image',\n /**\n * Exporting module only. The text for the JPEG download menu item.\n *\n * @since 2.0\n * @requires modules/exporting\n */\n downloadJPEG: 'Download JPEG image',\n /**\n * Exporting module only. The text for the PDF download menu item.\n *\n * @since 2.0\n * @requires modules/exporting\n */\n downloadPDF: 'Download PDF document',\n /**\n * Exporting module only. The text for the SVG download menu item.\n *\n * @since 2.0\n * @requires modules/exporting\n */\n downloadSVG: 'Download SVG vector image',\n /**\n * Exporting module menu. The tooltip title for the context menu holding\n * print and export menu items.\n *\n * @since 3.0\n * @requires modules/exporting\n */\n contextButtonTitle: 'Chart context menu'\n };\n /**\n * A collection of options for buttons and menus appearing in the exporting\n * module or in Stock Tools.\n *\n * @requires modules/exporting\n * @optionparent navigation\n */\n const navigation = {\n /**\n * A collection of options for buttons appearing in the exporting\n * module.\n *\n * In styled mode, the buttons are styled with the\n * `.highcharts-contextbutton` and `.highcharts-button-symbol` classes.\n *\n * @requires modules/exporting\n */\n buttonOptions: {\n /**\n * Whether to enable buttons.\n *\n * @sample highcharts/navigation/buttonoptions-enabled/\n * Exporting module loaded but buttons disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.0\n * @apioption navigation.buttonOptions.enabled\n */\n /**\n * The pixel size of the symbol on the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n symbolSize: 14,\n /**\n * The x position of the center of the symbol inside the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n symbolX: 14.5,\n /**\n * The y position of the center of the symbol inside the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n symbolY: 13.5,\n /**\n * Alignment for the buttons.\n *\n * @sample highcharts/navigation/buttonoptions-align/\n * Center aligned\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'right',\n /**\n * The pixel spacing between buttons.\n *\n * @since 2.0\n */\n buttonSpacing: 3,\n /**\n * Pixel height of the buttons.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n height: 28,\n /**\n * A text string to add to the individual button.\n *\n * @sample highcharts/exporting/buttons-text/\n * Full text button\n * @sample highcharts/exporting/buttons-text-usehtml/\n * Icon using CSS font in text\n * @sample highcharts/exporting/buttons-text-symbol/\n * Combined symbol and text\n *\n * @type {string}\n * @default null\n * @since 3.0\n * @apioption navigation.buttonOptions.text\n */\n /**\n * Whether to use HTML for rendering the button. HTML allows for things\n * like inline CSS or image-based icons.\n *\n * @sample highcharts/exporting/buttons-text-usehtml/\n * Icon using CSS font in text\n *\n * @type boolean\n * @default false\n * @since 10.3.0\n * @apioption navigation.buttonOptions.useHTML\n */\n /**\n * The vertical offset of the button's position relative to its\n * `verticalAlign`.\n *\n * @sample highcharts/navigation/buttonoptions-verticalalign/\n * Buttons at lower right\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption navigation.buttonOptions.y\n */\n /**\n * The vertical alignment of the buttons. Can be one of `\"top\"`,\n * `\"middle\"` or `\"bottom\"`.\n *\n * @sample highcharts/navigation/buttonoptions-verticalalign/\n * Buttons at lower right\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.0\n */\n verticalAlign: 'top',\n /**\n * The pixel width of the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n width: 28,\n /**\n * Fill color for the symbol within the button.\n *\n * @sample highcharts/navigation/buttonoptions-symbolfill/\n * Blue symbol stroke for one of the buttons\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.0\n */\n symbolFill: \"#666666\" /* Palette.neutralColor60 */,\n /**\n * The color of the symbol's stroke or line.\n *\n * @sample highcharts/navigation/buttonoptions-symbolstroke/\n * Blue symbol stroke\n *\n * @type {Highcharts.ColorString}\n * @since 2.0\n */\n symbolStroke: \"#666666\" /* Palette.neutralColor60 */,\n /**\n * The pixel stroke width of the symbol on the button.\n *\n * @sample highcharts/navigation/buttonoptions-height/\n * Bigger buttons\n *\n * @since 2.0\n */\n symbolStrokeWidth: 3,\n /**\n * A configuration object for the button theme. The object accepts\n * SVG properties like `stroke-width`, `stroke` and `fill`.\n * Tri-state button styles are supported by the `states.hover` and\n * `states.select` objects.\n *\n * @sample highcharts/navigation/buttonoptions-theme/\n * Theming the buttons\n *\n * @requires modules/exporting\n *\n * @since 3.0\n */\n theme: {\n /**\n * The default fill exists only to capture hover events.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @apioption navigation.buttonOptions.theme.fill\n */\n /**\n * Default stroke for the buttons.\n *\n * @type {Highcharts.ColorString}\n * @default none\n * @apioption navigation.buttonOptions.theme.stroke\n */\n /**\n * Padding for the button.\n */\n padding: 5\n }\n },\n /**\n * CSS styles for the popup menu appearing by default when the export\n * icon is clicked. This menu is rendered in HTML.\n *\n * @see In styled mode, the menu is styled with the `.highcharts-menu`\n * class.\n *\n * @sample highcharts/navigation/menustyle/\n * Light gray menu background\n *\n * @type {Highcharts.CSSObject}\n * @default {\"background\": \"#ffffff\", \"borderRadius\": \"3px\", \"padding\": \"0.5em\"}\n * @since 2.0\n */\n menuStyle: {\n /** @ignore-option */\n border: 'none',\n /** @ignore-option */\n borderRadius: '3px',\n /** @ignore-option */\n background: \"#ffffff\" /* Palette.backgroundColor */,\n /** @ignore-option */\n padding: '0.5em'\n },\n /**\n * CSS styles for the individual items within the popup menu appearing\n * by default when the export icon is clicked. The menu items are\n * rendered in HTML. Font size defaults to `11px` on desktop and `14px`\n * on touch devices.\n *\n * @see In styled mode, the menu items are styled with the\n * `.highcharts-menu-item` class.\n *\n * @sample {highcharts} highcharts/navigation/menuitemstyle/\n * Add a grey stripe to the left\n *\n * @type {Highcharts.CSSObject}\n * @default {\"padding\": \"0.5em\", \"color\": \"#333333\", \"background\": \"none\", \"borderRadius\": \"3px\", \"fontSize\": \"0.8em\", \"transition\": \"background 250ms, color 250ms\"}\n * @since 2.0\n */\n menuItemStyle: {\n /** @ignore-option */\n background: 'none',\n /** @ignore-option */\n borderRadius: '3px',\n /** @ignore-option */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /** @ignore-option */\n padding: '0.5em',\n /** @ignore-option */\n fontSize: isTouchDevice ? '0.9em' : '0.8em',\n /** @ignore-option */\n transition: 'background 250ms, color 250ms'\n },\n /**\n * CSS styles for the hover state of the individual items within the\n * popup menu appearing by default when the export icon is clicked. The\n * menu items are rendered in HTML.\n *\n * @see In styled mode, the menu items are styled with the\n * `.highcharts-menu-item` class.\n *\n * @sample highcharts/navigation/menuitemhoverstyle/\n * Bold text on hover\n *\n * @type {Highcharts.CSSObject}\n * @default {\"background\": \"#f2f2f2\" }\n * @since 2.0\n */\n menuItemHoverStyle: {\n /** @ignore-option */\n background: \"#f2f2f2\" /* Palette.neutralColor5 */\n }\n };\n /* *\n *\n * Default Export\n *\n * */\n const ExportingDefaults = {\n exporting,\n lang,\n navigation\n };\n\n return ExportingDefaults;\n });\n _registerModule(_modules, 'Extensions/Exporting/ExportingSymbols.js', [], function () {\n /* *\n *\n * Exporting module\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Composition\n *\n * */\n var ExportingSymbols;\n (function (ExportingSymbols) {\n /* *\n *\n * Constants\n *\n * */\n const modifiedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(SVGRendererClass) {\n if (modifiedClasses.indexOf(SVGRendererClass) === -1) {\n modifiedClasses.push(SVGRendererClass);\n const symbols = SVGRendererClass.prototype.symbols;\n symbols.menu = menu;\n symbols.menuball = menuball.bind(symbols);\n }\n }\n ExportingSymbols.compose = compose;\n /**\n * @private\n */\n function menu(x, y, width, height) {\n const arr = [\n ['M', x, y + 2.5],\n ['L', x + width, y + 2.5],\n ['M', x, y + height / 2 + 0.5],\n ['L', x + width, y + height / 2 + 0.5],\n ['M', x, y + height - 1.5],\n ['L', x + width, y + height - 1.5]\n ];\n return arr;\n }\n /**\n * @private\n */\n function menuball(x, y, width, height) {\n const h = (height / 3) - 2;\n let path = [];\n path = path.concat(this.circle(width - h, y, h, h), this.circle(width - h, y + h + 4, h, h), this.circle(width - h, y + 2 * (h + 4), h, h));\n return path;\n }\n })(ExportingSymbols || (ExportingSymbols = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ExportingSymbols;\n });\n _registerModule(_modules, 'Extensions/Exporting/Fullscreen.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Utilities.js']], function (AST, U) {\n /* *\n *\n * (c) 2009-2021 Rafal Sebestjanski\n *\n * Full screen for Highcharts\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /**\n * The module allows user to enable display chart in full screen mode.\n * Used in StockTools too.\n * Based on default solutions in browsers.\n */\n /* *\n *\n * Imports\n *\n * */\n const { addEvent, fireEvent } = U;\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function onChartBeforeRender() {\n /**\n * @name Highcharts.Chart#fullscreen\n * @type {Highcharts.Fullscreen}\n * @requires modules/full-screen\n */\n this.fullscreen = new Fullscreen(this);\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Handles displaying chart's container in the fullscreen mode.\n *\n * **Note**: Fullscreen is not supported on iPhone due to iOS limitations.\n *\n * @class\n * @name Highcharts.Fullscreen\n *\n * @requires modules/exporting\n */\n class Fullscreen {\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Prepares the chart class to support fullscreen.\n *\n * @param {typeof_Highcharts.Chart} ChartClass\n * The chart class to decorate with fullscreen support.\n */\n static compose(ChartClass) {\n if (U.pushUnique(composedMembers, ChartClass)) {\n // Initialize fullscreen\n addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n }\n }\n /* *\n *\n * Constructors\n *\n * */\n constructor(chart) {\n /**\n * Chart managed by the fullscreen controller.\n * @name Highcharts.Fullscreen#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n /**\n * The flag is set to `true` when the chart is displayed in\n * the fullscreen mode.\n *\n * @name Highcharts.Fullscreen#isOpen\n * @type {boolean|undefined}\n * @since 8.0.1\n */\n this.isOpen = false;\n const container = chart.renderTo;\n // Hold event and methods available only for a current browser.\n if (!this.browserProps) {\n if (typeof container.requestFullscreen === 'function') {\n this.browserProps = {\n fullscreenChange: 'fullscreenchange',\n requestFullscreen: 'requestFullscreen',\n exitFullscreen: 'exitFullscreen'\n };\n }\n else if (container.mozRequestFullScreen) {\n this.browserProps = {\n fullscreenChange: 'mozfullscreenchange',\n requestFullscreen: 'mozRequestFullScreen',\n exitFullscreen: 'mozCancelFullScreen'\n };\n }\n else if (container.webkitRequestFullScreen) {\n this.browserProps = {\n fullscreenChange: 'webkitfullscreenchange',\n requestFullscreen: 'webkitRequestFullScreen',\n exitFullscreen: 'webkitExitFullscreen'\n };\n }\n else if (container.msRequestFullscreen) {\n this.browserProps = {\n fullscreenChange: 'MSFullscreenChange',\n requestFullscreen: 'msRequestFullscreen',\n exitFullscreen: 'msExitFullscreen'\n };\n }\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Stops displaying the chart in fullscreen mode.\n * Exporting module required.\n *\n * @since 8.0.1\n *\n * @function Highcharts.Fullscreen#close\n * @return {void}\n * @requires modules/full-screen\n */\n close() {\n const fullscreen = this, chart = fullscreen.chart, optionsChart = chart.options.chart;\n fireEvent(chart, 'fullscreenClose', null, function () {\n // Don't fire exitFullscreen() when user exited\n // using 'Escape' button.\n if (fullscreen.isOpen &&\n fullscreen.browserProps &&\n chart.container.ownerDocument instanceof Document) {\n chart.container.ownerDocument[fullscreen.browserProps.exitFullscreen]();\n }\n // Unbind event as it's necessary only before exiting\n // from fullscreen.\n if (fullscreen.unbindFullscreenEvent) {\n fullscreen.unbindFullscreenEvent = fullscreen\n .unbindFullscreenEvent();\n }\n chart.setSize(fullscreen.origWidth, fullscreen.origHeight, false);\n fullscreen.origWidth = void 0;\n fullscreen.origHeight = void 0;\n optionsChart.width = fullscreen.origWidthOption;\n optionsChart.height = fullscreen.origHeightOption;\n fullscreen.origWidthOption = void 0;\n fullscreen.origHeightOption = void 0;\n fullscreen.isOpen = false;\n fullscreen.setButtonText();\n });\n }\n /**\n * Displays the chart in fullscreen mode.\n * When fired customly by user before exporting context button is created,\n * button's text will not be replaced - it's on the user side.\n * Exporting module required.\n *\n * @since 8.0.1\n *\n * @function Highcharts.Fullscreen#open\n * @return {void}\n * @requires modules/full-screen\n */\n open() {\n const fullscreen = this, chart = fullscreen.chart, optionsChart = chart.options.chart;\n fireEvent(chart, 'fullscreenOpen', null, function () {\n if (optionsChart) {\n fullscreen.origWidthOption = optionsChart.width;\n fullscreen.origHeightOption = optionsChart.height;\n }\n fullscreen.origWidth = chart.chartWidth;\n fullscreen.origHeight = chart.chartHeight;\n // Handle exitFullscreen() method when user clicks 'Escape' button.\n if (fullscreen.browserProps) {\n const unbindChange = addEvent(chart.container.ownerDocument, // chart's document\n fullscreen.browserProps.fullscreenChange, function () {\n // Handle lack of async of browser's\n // fullScreenChange event.\n if (fullscreen.isOpen) {\n fullscreen.isOpen = false;\n fullscreen.close();\n }\n else {\n chart.setSize(null, null, false);\n fullscreen.isOpen = true;\n fullscreen.setButtonText();\n }\n });\n const unbindDestroy = addEvent(chart, 'destroy', unbindChange);\n fullscreen.unbindFullscreenEvent = () => {\n unbindChange();\n unbindDestroy();\n };\n const promise = chart.renderTo[fullscreen.browserProps.requestFullscreen]();\n if (promise) {\n promise['catch'](function () {\n alert(// eslint-disable-line no-alert\n 'Full screen is not supported inside a frame.');\n });\n }\n }\n });\n }\n /**\n * Replaces the exporting context button's text when toogling the\n * fullscreen mode.\n *\n * @private\n *\n * @since 8.0.1\n *\n * @requires modules/full-screen\n */\n setButtonText() {\n const chart = this.chart, exportDivElements = chart.exportDivElements, exportingOptions = chart.options.exporting, menuItems = (exportingOptions &&\n exportingOptions.buttons &&\n exportingOptions.buttons.contextButton.menuItems), lang = chart.options.lang;\n if (exportingOptions &&\n exportingOptions.menuItemDefinitions &&\n lang &&\n lang.exitFullscreen &&\n lang.viewFullscreen &&\n menuItems &&\n exportDivElements) {\n const exportDivElement = exportDivElements[menuItems.indexOf('viewFullscreen')];\n if (exportDivElement) {\n AST.setElementHTML(exportDivElement, !this.isOpen ?\n (exportingOptions.menuItemDefinitions.viewFullscreen\n .text ||\n lang.viewFullscreen) : lang.exitFullscreen);\n }\n }\n }\n /**\n * Toggles displaying the chart in fullscreen mode.\n * By default, when the exporting module is enabled, a context button with\n * a drop down menu in the upper right corner accesses this function.\n * Exporting module required.\n *\n * @since 8.0.1\n *\n * @sample highcharts/members/chart-togglefullscreen/\n * Toggle fullscreen mode from a HTML button\n *\n * @function Highcharts.Fullscreen#toggle\n * @requires modules/full-screen\n */\n toggle() {\n const fullscreen = this;\n if (!fullscreen.isOpen) {\n fullscreen.open();\n }\n else {\n fullscreen.close();\n }\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Gets fired when closing the fullscreen\n *\n * @callback Highcharts.FullScreenfullscreenCloseCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired when opening the fullscreen\n *\n * @callback Highcharts.FullScreenfullscreenOpenCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n (''); // keeps doclets above separated from following code\n /* *\n *\n * API Options\n *\n * */\n /**\n * Fires when a fullscreen is closed through the context menu item,\n * or a fullscreen is closed on the `Escape` button click,\n * or the `Chart.fullscreen.close` method.\n *\n * @sample highcharts/chart/events-fullscreen\n * Title size change on fullscreen open\n *\n * @type {Highcharts.FullScreenfullscreenCloseCallbackFunction}\n * @since 10.1.0\n * @context Highcharts.Chart\n * @requires modules/full-screen\n * @apioption chart.events.fullscreenClose\n */\n /**\n * Fires when a fullscreen is opened through the context menu item,\n * or the `Chart.fullscreen.open` method.\n *\n * @sample highcharts/chart/events-fullscreen\n * Title size change on fullscreen open\n *\n * @type {Highcharts.FullScreenfullscreenOpenCallbackFunction}\n * @since 10.1.0\n * @context Highcharts.Chart\n * @requires modules/full-screen\n * @apioption chart.events.fullscreenOpen\n */\n (''); // keeps doclets above in transpiled file\n\n return Fullscreen;\n });\n _registerModule(_modules, 'Core/HttpUtilities.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (G, U) {\n /* *\n *\n * (c) 2010-2021 Christer Vasseng, Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { doc } = G;\n const { createElement, discardElement, merge, objectEach } = U;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Perform an Ajax call.\n *\n * @function Highcharts.ajax\n *\n * @param {Highcharts.AjaxSettingsObject} settings\n * The Ajax settings to use.\n *\n * @return {false|undefined}\n * Returns false, if error occured.\n */\n function ajax(settings) {\n const headers = {\n json: 'application/json',\n xml: 'application/xml',\n text: 'text/plain',\n octet: 'application/octet-stream'\n }, r = new XMLHttpRequest();\n /**\n * Private error handler.\n * @private\n * @param {XMLHttpRequest} xhr\n * Internal request object.\n * @param {string|Error} err\n * Occured error.\n */\n function handleError(xhr, err) {\n if (settings.error) {\n settings.error(xhr, err);\n }\n else {\n // @todo Maybe emit a highcharts error event here\n }\n }\n if (!settings.url) {\n return false;\n }\n r.open((settings.type || 'get').toUpperCase(), settings.url, true);\n if (!settings.headers || !settings.headers['Content-Type']) {\n r.setRequestHeader('Content-Type', headers[settings.dataType || 'json'] || headers.text);\n }\n objectEach(settings.headers, function (val, key) {\n r.setRequestHeader(key, val);\n });\n if (settings.responseType) {\n r.responseType = settings.responseType;\n }\n // @todo lacking timeout handling\n r.onreadystatechange = function () {\n let res;\n if (r.readyState === 4) {\n if (r.status === 200) {\n if (settings.responseType !== 'blob') {\n res = r.responseText;\n if (settings.dataType === 'json') {\n try {\n res = JSON.parse(res);\n }\n catch (e) {\n if (e instanceof Error) {\n return handleError(r, e);\n }\n }\n }\n }\n return settings.success && settings.success(res, r);\n }\n handleError(r, r.responseText);\n }\n };\n if (settings.data && typeof settings.data !== 'string') {\n settings.data = JSON.stringify(settings.data);\n }\n r.send(settings.data);\n }\n /**\n * Get a JSON resource over XHR, also supporting CORS without preflight.\n *\n * @function Highcharts.getJSON\n * @param {string} url\n * The URL to load.\n * @param {Function} success\n * The success callback. For error handling, use the `Highcharts.ajax`\n * function instead.\n */\n function getJSON(url, success) {\n HttpUtilities.ajax({\n url: url,\n success: success,\n dataType: 'json',\n headers: {\n // Override the Content-Type to avoid preflight problems with CORS\n // in the Highcharts demos\n 'Content-Type': 'text/plain'\n }\n });\n }\n /**\n * The post utility\n *\n * @private\n * @function Highcharts.post\n *\n * @param {string} url\n * Post URL\n *\n * @param {Object} data\n * Post data\n *\n * @param {Highcharts.Dictionary} [formAttributes]\n * Additional attributes for the post request\n */\n function post(url, data, formAttributes) {\n // create the form\n const form = createElement('form', merge({\n method: 'post',\n action: url,\n enctype: 'multipart/form-data'\n }, formAttributes), {\n display: 'none'\n }, doc.body);\n // add the data\n objectEach(data, function (val, name) {\n createElement('input', {\n type: 'hidden',\n name: name,\n value: val\n }, void 0, form);\n });\n // submit\n form.submit();\n // clean up\n discardElement(form);\n }\n /* *\n *\n * Default Export\n *\n * */\n const HttpUtilities = {\n ajax,\n getJSON,\n post\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @interface Highcharts.AjaxSettingsObject\n */ /**\n * The payload to send.\n *\n * @name Highcharts.AjaxSettingsObject#data\n * @type {string|Highcharts.Dictionary|undefined}\n */ /**\n * The data type expected.\n * @name Highcharts.AjaxSettingsObject#dataType\n * @type {\"json\"|\"xml\"|\"text\"|\"octet\"|undefined}\n */ /**\n * Function to call on error.\n * @name Highcharts.AjaxSettingsObject#error\n * @type {Function|undefined}\n */ /**\n * The headers; keyed on header name.\n * @name Highcharts.AjaxSettingsObject#headers\n * @type {Highcharts.Dictionary|undefined}\n */ /**\n * Function to call on success.\n * @name Highcharts.AjaxSettingsObject#success\n * @type {Function|undefined}\n */ /**\n * The HTTP method to use. For example GET or POST.\n * @name Highcharts.AjaxSettingsObject#type\n * @type {string|undefined}\n */ /**\n * The URL to call.\n * @name Highcharts.AjaxSettingsObject#url\n * @type {string}\n */\n (''); // keeps doclets above in JS file\n\n return HttpUtilities;\n });\n _registerModule(_modules, 'Extensions/Exporting/Exporting.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Chart/ChartNavigationComposition.js'], _modules['Core/Defaults.js'], _modules['Extensions/Exporting/ExportingDefaults.js'], _modules['Extensions/Exporting/ExportingSymbols.js'], _modules['Extensions/Exporting/Fullscreen.js'], _modules['Core/Globals.js'], _modules['Core/HttpUtilities.js'], _modules['Core/Utilities.js']], function (AST, Chart, ChartNavigationComposition, D, ExportingDefaults, ExportingSymbols, Fullscreen, G, HU, U) {\n /* *\n *\n * Exporting module\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n const { defaultOptions, setOptions } = D;\n const { doc, SVG_NS, win } = G;\n const { addEvent, css, createElement, discardElement, extend, find, fireEvent, isObject, merge, objectEach, pick, removeEvent, uniqueKey } = U;\n /* *\n *\n * Composition\n *\n * */\n var Exporting;\n (function (Exporting) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n const composedMembers = [];\n // These CSS properties are not inlined. Remember camelCase.\n const inlineDenylist = [\n /-/,\n /^(clipPath|cssText|d|height|width)$/,\n /^font$/,\n /[lL]ogical(Width|Height)$/,\n /^parentRule$/,\n /perspective/,\n /TapHighlightColor/,\n /^transition/,\n /^length$/,\n /^[0-9]+$/ // #17538\n ];\n // These ones are translated to attributes rather than styles\n const inlineToAttributes = [\n 'fill',\n 'stroke',\n 'strokeLinecap',\n 'strokeLinejoin',\n 'strokeWidth',\n 'textAnchor',\n 'x',\n 'y'\n ];\n Exporting.inlineAllowlist = [];\n const unstyledElements = [\n 'clipPath',\n 'defs',\n 'desc'\n ];\n /* *\n *\n * Variables\n *\n * */\n let printingChart;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Add the export button to the chart, with options.\n *\n * @private\n * @function Highcharts.Chart#addButton\n * @param {Highcharts.NavigationButtonOptions} options\n * @requires modules/exporting\n */\n function addButton(options) {\n const chart = this, renderer = chart.renderer, btnOptions = merge(chart.options.navigation.buttonOptions, options), onclick = btnOptions.onclick, menuItems = btnOptions.menuItems, symbolSize = btnOptions.symbolSize || 12;\n let symbol;\n if (!chart.btnCount) {\n chart.btnCount = 0;\n }\n // Keeps references to the button elements\n if (!chart.exportDivElements) {\n chart.exportDivElements = [];\n chart.exportSVGElements = [];\n }\n if (btnOptions.enabled === false || !btnOptions.theme) {\n return;\n }\n const attr = btnOptions.theme;\n let callback;\n if (!chart.styledMode) {\n attr.fill = pick(attr.fill, \"#ffffff\" /* Palette.backgroundColor */);\n attr.stroke = pick(attr.stroke, 'none');\n }\n if (onclick) {\n callback = function (e) {\n if (e) {\n e.stopPropagation();\n }\n onclick.call(chart, e);\n };\n }\n else if (menuItems) {\n callback = function (e) {\n // consistent with onclick call (#3495)\n if (e) {\n e.stopPropagation();\n }\n chart.contextMenu(button.menuClassName, menuItems, button.translateX, button.translateY, button.width, button.height, button);\n button.setState(2);\n };\n }\n if (btnOptions.text && btnOptions.symbol) {\n attr.paddingLeft = pick(attr.paddingLeft, 30);\n }\n else if (!btnOptions.text) {\n extend(attr, {\n width: btnOptions.width,\n height: btnOptions.height,\n padding: 0\n });\n }\n if (!chart.styledMode) {\n attr['stroke-linecap'] = 'round';\n attr.fill = pick(attr.fill, \"#ffffff\" /* Palette.backgroundColor */);\n attr.stroke = pick(attr.stroke, 'none');\n }\n const button = renderer\n .button(btnOptions.text, 0, 0, callback, attr, void 0, void 0, void 0, void 0, btnOptions.useHTML)\n .addClass(options.className)\n .attr({\n title: pick(chart.options.lang[btnOptions._titleKey || btnOptions.titleKey], '')\n });\n button.menuClassName = (options.menuClassName ||\n 'highcharts-menu-' + chart.btnCount++);\n if (btnOptions.symbol) {\n symbol = renderer\n .symbol(btnOptions.symbol, btnOptions.symbolX - (symbolSize / 2), btnOptions.symbolY - (symbolSize / 2), symbolSize, symbolSize\n // If symbol is an image, scale it (#7957)\n , {\n width: symbolSize,\n height: symbolSize\n })\n .addClass('highcharts-button-symbol')\n .attr({\n zIndex: 1\n })\n .add(button);\n if (!chart.styledMode) {\n symbol.attr({\n stroke: btnOptions.symbolStroke,\n fill: btnOptions.symbolFill,\n 'stroke-width': btnOptions.symbolStrokeWidth || 1\n });\n }\n }\n button\n .add(chart.exportingGroup)\n .align(extend(btnOptions, {\n width: button.width,\n x: pick(btnOptions.x, chart.buttonOffset) // #1654\n }), true, 'spacingBox');\n chart.buttonOffset += ((button.width + btnOptions.buttonSpacing) *\n (btnOptions.align === 'right' ? -1 : 1));\n chart.exportSVGElements.push(button, symbol);\n }\n /**\n * Clena up after printing a chart.\n *\n * @function Highcharts#afterPrint\n *\n * @private\n *\n * @param {Highcharts.Chart} chart\n * Chart that was (or suppose to be) printed\n *\n * @emits Highcharts.Chart#event:afterPrint\n */\n function afterPrint() {\n const chart = this;\n if (!chart.printReverseInfo) {\n return void 0;\n }\n const { childNodes, origDisplay, resetParams } = chart.printReverseInfo;\n // put the chart back in\n chart.moveContainers(chart.renderTo);\n // restore all body content\n [].forEach.call(childNodes, function (node, i) {\n if (node.nodeType === 1) {\n node.style.display = (origDisplay[i] || '');\n }\n });\n chart.isPrinting = false;\n // Reset printMaxWidth\n if (resetParams) {\n chart.setSize.apply(chart, resetParams);\n }\n delete chart.printReverseInfo;\n printingChart = void 0;\n fireEvent(chart, 'afterPrint');\n }\n /**\n * Prepare chart and document before printing a chart.\n *\n * @function Highcharts#beforePrint\n *\n * @private\n *\n *\n * @emits Highcharts.Chart#event:beforePrint\n */\n function beforePrint() {\n const chart = this, body = doc.body, printMaxWidth = chart.options.exporting.printMaxWidth, printReverseInfo = {\n childNodes: body.childNodes,\n origDisplay: [],\n resetParams: void 0\n };\n chart.isPrinting = true;\n chart.pointer.reset(null, 0);\n fireEvent(chart, 'beforePrint');\n // Handle printMaxWidth\n const handleMaxWidth = printMaxWidth &&\n chart.chartWidth > printMaxWidth;\n if (handleMaxWidth) {\n printReverseInfo.resetParams = [\n chart.options.chart.width,\n void 0,\n false\n ];\n chart.setSize(printMaxWidth, void 0, false);\n }\n // hide all body content\n [].forEach.call(printReverseInfo.childNodes, function (node, i) {\n if (node.nodeType === 1) {\n printReverseInfo.origDisplay[i] = node.style.display;\n node.style.display = 'none';\n }\n });\n // pull out the chart\n chart.moveContainers(body);\n // Storage details for undo action after printing\n chart.printReverseInfo = printReverseInfo;\n }\n /**\n * @private\n */\n function chartCallback(chart) {\n const composition = chart;\n composition.renderExporting();\n addEvent(chart, 'redraw', composition.renderExporting);\n // Destroy the export elements at chart destroy\n addEvent(chart, 'destroy', composition.destroyExport);\n // Uncomment this to see a button directly below the chart, for quick\n // testing of export\n /*\n let button, viewImage, viewSource;\n if (!chart.renderer.forExport) {\n viewImage = function () {\n let div = doc.createElement('div');\n div.innerHTML = chart.getSVGForExport();\n chart.renderTo.parentNode.appendChild(div);\n };\n\n viewSource = function () {\n let pre = doc.createElement('pre');\n pre.innerHTML = chart.getSVGForExport()\n .replace(//g, '>');\n chart.renderTo.parentNode.appendChild(pre);\n };\n\n viewImage();\n\n // View SVG Image\n button = doc.createElement('button');\n button.innerHTML = 'View SVG Image';\n chart.renderTo.parentNode.appendChild(button);\n button.onclick = viewImage;\n\n // View SVG Source\n button = doc.createElement('button');\n button.innerHTML = 'View SVG Source';\n chart.renderTo.parentNode.appendChild(button);\n button.onclick = viewSource;\n }\n //*/\n }\n /**\n * @private\n */\n function compose(ChartClass, SVGRendererClass) {\n ExportingSymbols.compose(SVGRendererClass);\n Fullscreen.compose(ChartClass);\n if (U.pushUnique(composedMembers, ChartClass)) {\n const chartProto = ChartClass.prototype;\n chartProto.afterPrint = afterPrint;\n chartProto.exportChart = exportChart;\n chartProto.inlineStyles = inlineStyles;\n chartProto.print = print;\n chartProto.sanitizeSVG = sanitizeSVG;\n chartProto.getChartHTML = getChartHTML;\n chartProto.getSVG = getSVG;\n chartProto.getSVGForExport = getSVGForExport;\n chartProto.getFilename = getFilename;\n chartProto.moveContainers = moveContainers;\n chartProto.beforePrint = beforePrint;\n chartProto.contextMenu = contextMenu;\n chartProto.addButton = addButton;\n chartProto.destroyExport = destroyExport;\n chartProto.renderExporting = renderExporting;\n chartProto.callbacks.push(chartCallback);\n addEvent(ChartClass, 'init', onChartInit);\n if (G.isSafari) {\n G.win.matchMedia('print').addListener(function (mqlEvent) {\n if (!printingChart) {\n return void 0;\n }\n if (mqlEvent.matches) {\n printingChart.beforePrint();\n }\n else {\n printingChart.afterPrint();\n }\n });\n }\n }\n if (U.pushUnique(composedMembers, setOptions)) {\n defaultOptions.exporting = merge(ExportingDefaults.exporting, defaultOptions.exporting);\n defaultOptions.lang = merge(ExportingDefaults.lang, defaultOptions.lang);\n // Buttons and menus are collected in a separate config option set\n // called 'navigation'. This can be extended later to add control\n // buttons like zoom and pan right click menus.\n defaultOptions.navigation = merge(ExportingDefaults.navigation, defaultOptions.navigation);\n }\n }\n Exporting.compose = compose;\n /**\n * Display a popup menu for choosing the export type.\n *\n * @private\n * @function Highcharts.Chart#contextMenu\n * @param {string} className\n * An identifier for the menu.\n * @param {Array} items\n * A collection with text and onclicks for the items.\n * @param {number} x\n * The x position of the opener button\n * @param {number} y\n * The y position of the opener button\n * @param {number} width\n * The width of the opener button\n * @param {number} height\n * The height of the opener button\n * @requires modules/exporting\n */\n function contextMenu(className, items, x, y, width, height, button) {\n const chart = this, navOptions = chart.options.navigation, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, cacheName = 'cache-' + className, menuPadding = Math.max(width, height); // for mouse leave detection\n let innerMenu, menu = chart[cacheName];\n // create the menu only the first time\n if (!menu) {\n // create a HTML element above the SVG\n chart.exportContextMenu = chart[cacheName] = menu =\n createElement('div', {\n className: className\n }, {\n position: 'absolute',\n zIndex: 1000,\n padding: menuPadding + 'px',\n pointerEvents: 'auto'\n }, chart.fixedDiv || chart.container);\n innerMenu = createElement('ul', { className: 'highcharts-menu' }, chart.styledMode ? {} : {\n listStyle: 'none',\n margin: 0,\n padding: 0\n }, menu);\n // Presentational CSS\n if (!chart.styledMode) {\n css(innerMenu, extend({\n MozBoxShadow: '3px 3px 10px #888',\n WebkitBoxShadow: '3px 3px 10px #888',\n boxShadow: '3px 3px 10px #888'\n }, navOptions.menuStyle));\n }\n // hide on mouse out\n menu.hideMenu = function () {\n css(menu, { display: 'none' });\n if (button) {\n button.setState(0);\n }\n chart.openMenu = false;\n // #10361, #9998\n css(chart.renderTo, { overflow: 'hidden' });\n css(chart.container, { overflow: 'hidden' });\n U.clearTimeout(menu.hideTimer);\n fireEvent(chart, 'exportMenuHidden');\n };\n // Hide the menu some time after mouse leave (#1357)\n chart.exportEvents.push(addEvent(menu, 'mouseleave', function () {\n menu.hideTimer = win.setTimeout(menu.hideMenu, 500);\n }), addEvent(menu, 'mouseenter', function () {\n U.clearTimeout(menu.hideTimer);\n }), \n // Hide it on clicking or touching outside the menu (#2258,\n // #2335, #2407)\n addEvent(doc, 'mouseup', function (e) {\n if (!chart.pointer.inClass(e.target, className)) {\n menu.hideMenu();\n }\n }), addEvent(menu, 'click', function () {\n if (chart.openMenu) {\n menu.hideMenu();\n }\n }));\n // create the items\n items.forEach(function (item) {\n if (typeof item === 'string') {\n item = chart.options.exporting\n .menuItemDefinitions[item];\n }\n if (isObject(item, true)) {\n let element;\n if (item.separator) {\n element = createElement('hr', void 0, void 0, innerMenu);\n }\n else {\n // When chart initialized with the table, wrong button\n // text displayed, #14352.\n if (item.textKey === 'viewData' &&\n chart.isDataTableVisible) {\n item.textKey = 'hideData';\n }\n element = createElement('li', {\n className: 'highcharts-menu-item',\n onclick: function (e) {\n if (e) { // IE7\n e.stopPropagation();\n }\n menu.hideMenu();\n if (item.onclick) {\n item.onclick\n .apply(chart, arguments);\n }\n }\n }, void 0, innerMenu);\n AST.setElementHTML(element, item.text ||\n chart.options.lang[item.textKey]);\n if (!chart.styledMode) {\n element.onmouseover = function () {\n css(this, navOptions.menuItemHoverStyle);\n };\n element.onmouseout = function () {\n css(this, navOptions.menuItemStyle);\n };\n css(element, extend({\n cursor: 'pointer'\n }, navOptions.menuItemStyle || {}));\n }\n }\n // Keep references to menu divs to be able to destroy them\n chart.exportDivElements.push(element);\n }\n });\n // Keep references to menu and innerMenu div to be able to destroy\n // them\n chart.exportDivElements.push(innerMenu, menu);\n chart.exportMenuWidth = menu.offsetWidth;\n chart.exportMenuHeight = menu.offsetHeight;\n }\n const menuStyle = { display: 'block' };\n // if outside right, right align it\n if (x + chart.exportMenuWidth > chartWidth) {\n menuStyle.right = (chartWidth - x - width - menuPadding) + 'px';\n }\n else {\n menuStyle.left = (x - menuPadding) + 'px';\n }\n // if outside bottom, bottom align it\n if (y + height + chart.exportMenuHeight > chartHeight &&\n button.alignOptions.verticalAlign !== 'top') {\n menuStyle.bottom = (chartHeight - y - menuPadding) + 'px';\n }\n else {\n menuStyle.top = (y + height - menuPadding) + 'px';\n }\n css(menu, menuStyle);\n // #10361, #9998\n css(chart.renderTo, { overflow: '' });\n css(chart.container, { overflow: '' });\n chart.openMenu = true;\n fireEvent(chart, 'exportMenuShown');\n }\n /**\n * Destroy the export buttons.\n * @private\n * @function Highcharts.Chart#destroyExport\n * @param {global.Event} [e]\n * @requires modules/exporting\n */\n function destroyExport(e) {\n const chart = e ? e.target : this, exportSVGElements = chart.exportSVGElements, exportDivElements = chart.exportDivElements, exportEvents = chart.exportEvents;\n let cacheName;\n // Destroy the extra buttons added\n if (exportSVGElements) {\n exportSVGElements.forEach((elem, i) => {\n // Destroy and null the svg elements\n if (elem) { // #1822\n elem.onclick = elem.ontouchstart = null;\n cacheName = 'cache-' + elem.menuClassName;\n if (chart[cacheName]) {\n delete chart[cacheName];\n }\n exportSVGElements[i] = elem.destroy();\n }\n });\n exportSVGElements.length = 0;\n }\n // Destroy the exporting group\n if (chart.exportingGroup) {\n chart.exportingGroup.destroy();\n delete chart.exportingGroup;\n }\n // Destroy the divs for the menu\n if (exportDivElements) {\n exportDivElements.forEach(function (elem, i) {\n if (elem) {\n // Remove the event handler\n U.clearTimeout(elem.hideTimer); // #5427\n removeEvent(elem, 'mouseleave');\n // Remove inline events\n // (chart.exportDivElements as any)[i] =\n exportDivElements[i] =\n elem.onmouseout =\n elem.onmouseover =\n elem.ontouchstart =\n elem.onclick = null;\n // Destroy the div by moving to garbage bin\n discardElement(elem);\n }\n });\n exportDivElements.length = 0;\n }\n if (exportEvents) {\n exportEvents.forEach(function (unbind) {\n unbind();\n });\n exportEvents.length = 0;\n }\n }\n /**\n * Exporting module required. Submit an SVG version of the chart to a server\n * along with some parameters for conversion.\n *\n * @sample highcharts/members/chart-exportchart/\n * Export with no options\n * @sample highcharts/members/chart-exportchart-filename/\n * PDF type and custom filename\n * @sample highcharts/members/chart-exportchart-custom-background/\n * Different chart background in export\n * @sample stock/members/chart-exportchart/\n * Export with Highcharts Stock\n *\n * @function Highcharts.Chart#exportChart\n *\n * @param {Highcharts.ExportingOptions} exportingOptions\n * Exporting options in addition to those defined in\n * [exporting](https://api.highcharts.com/highcharts/exporting).\n *\n * @param {Highcharts.Options} chartOptions\n * Additional chart options for the exported chart. For example a\n * different background color can be added here, or `dataLabels` for\n * export only.\n *\n * @requires modules/exporting\n */\n function exportChart(exportingOptions, chartOptions) {\n const svg = this.getSVGForExport(exportingOptions, chartOptions);\n // merge the options\n exportingOptions = merge(this.options.exporting, exportingOptions);\n // do the post\n HU.post(exportingOptions.url, {\n filename: exportingOptions.filename ?\n exportingOptions.filename.replace(/\\//g, '-') :\n this.getFilename(),\n type: exportingOptions.type,\n width: exportingOptions.width,\n scale: exportingOptions.scale,\n svg: svg\n }, exportingOptions.formAttributes);\n }\n /**\n * Return the unfiltered innerHTML of the chart container. Used as hook for\n * plugins. In styled mode, it also takes care of inlining CSS style rules.\n *\n * @see Chart#getSVG\n *\n * @function Highcharts.Chart#getChartHTML\n *\n * @return {string}\n * The unfiltered SVG of the chart.\n *\n * @requires modules/exporting\n */\n function getChartHTML() {\n if (this.styledMode) {\n this.inlineStyles();\n }\n return this.container.innerHTML;\n }\n /**\n * Get the default file name used for exported charts. By default it creates\n * a file name based on the chart title.\n *\n * @function Highcharts.Chart#getFilename\n *\n * @return {string} A file name without extension.\n *\n * @requires modules/exporting\n */\n function getFilename() {\n const s = this.userOptions.title && this.userOptions.title.text;\n let filename = this.options.exporting.filename;\n if (filename) {\n return filename.replace(/\\//g, '-');\n }\n if (typeof s === 'string') {\n filename = s\n .toLowerCase()\n .replace(/<\\/?[^>]+(>|$)/g, '') // strip HTML tags\n .replace(/[\\s_]+/g, '-')\n .replace(/[^a-z0-9\\-]/g, '') // preserve only latin\n .replace(/^[\\-]+/g, '') // dashes in the start\n .replace(/[\\-]+/g, '-') // dashes in a row\n .substr(0, 24)\n .replace(/[\\-]+$/g, ''); // dashes in the end;\n }\n if (!filename || filename.length < 5) {\n filename = 'chart';\n }\n return filename;\n }\n /**\n * Return an SVG representation of the chart.\n *\n * @sample highcharts/members/chart-getsvg/\n * View the SVG from a button\n *\n * @function Highcharts.Chart#getSVG\n *\n * @param {Highcharts.Options} [chartOptions]\n * Additional chart options for the generated SVG representation. For\n * collections like `xAxis`, `yAxis` or `series`, the additional\n * options is either merged in to the original item of the same\n * `id`, or to the first item if a common id is not found.\n *\n * @return {string}\n * The SVG representation of the rendered chart.\n *\n * @emits Highcharts.Chart#event:getSVG\n *\n * @requires modules/exporting\n */\n function getSVG(chartOptions) {\n const chart = this;\n let svg, seriesOptions, \n // Copy the options and add extra options\n options = merge(chart.options, chartOptions);\n // Use userOptions to make the options chain in series right (#3881)\n options.plotOptions = merge(chart.userOptions.plotOptions, chartOptions && chartOptions.plotOptions);\n // ... and likewise with time, avoid that undefined time properties are\n // merged over legacy global time options\n options.time = merge(chart.userOptions.time, chartOptions && chartOptions.time);\n // create a sandbox where a new chart will be generated\n const sandbox = createElement('div', null, {\n position: 'absolute',\n top: '-9999em',\n width: chart.chartWidth + 'px',\n height: chart.chartHeight + 'px'\n }, doc.body);\n // get the source size\n const cssWidth = chart.renderTo.style.width, cssHeight = chart.renderTo.style.height, sourceWidth = options.exporting.sourceWidth ||\n options.chart.width ||\n (/px$/.test(cssWidth) && parseInt(cssWidth, 10)) ||\n (options.isGantt ? 800 : 600), sourceHeight = options.exporting.sourceHeight ||\n options.chart.height ||\n (/px$/.test(cssHeight) && parseInt(cssHeight, 10)) ||\n 400;\n // override some options\n extend(options.chart, {\n animation: false,\n renderTo: sandbox,\n forExport: true,\n renderer: 'SVGRenderer',\n width: sourceWidth,\n height: sourceHeight\n });\n options.exporting.enabled = false; // hide buttons in print\n delete options.data; // #3004\n // prepare for replicating the chart\n options.series = [];\n chart.series.forEach(function (serie) {\n seriesOptions = merge(serie.userOptions, {\n animation: false,\n enableMouseTracking: false,\n showCheckbox: false,\n visible: serie.visible\n });\n // Used for the navigator series that has its own option set\n if (!seriesOptions.isInternal) {\n options.series.push(seriesOptions);\n }\n });\n const colls = {};\n chart.axes.forEach(function (axis) {\n // Assign an internal key to ensure a one-to-one mapping (#5924)\n if (!axis.userOptions.internalKey) { // #6444\n axis.userOptions.internalKey = uniqueKey();\n }\n if (!axis.options.isInternal) {\n if (!colls[axis.coll]) {\n colls[axis.coll] = true;\n options[axis.coll] = [];\n }\n options[axis.coll].push(merge(axis.userOptions, {\n visible: axis.visible\n }));\n }\n });\n // Generate the chart copy\n const chartCopy = new chart.constructor(options, chart.callback);\n // Axis options and series options (#2022, #3900, #5982)\n if (chartOptions) {\n ['xAxis', 'yAxis', 'series'].forEach(function (coll) {\n const collOptions = {};\n if (chartOptions[coll]) {\n collOptions[coll] = chartOptions[coll];\n chartCopy.update(collOptions);\n }\n });\n }\n // Reflect axis extremes in the export (#5924)\n chart.axes.forEach(function (axis) {\n const axisCopy = find(chartCopy.axes, function (copy) {\n return copy.options.internalKey ===\n axis.userOptions.internalKey;\n }), extremes = axis.getExtremes(), userMin = extremes.userMin, userMax = extremes.userMax;\n if (axisCopy &&\n ((typeof userMin !== 'undefined' &&\n userMin !== axisCopy.min) || (typeof userMax !== 'undefined' &&\n userMax !== axisCopy.max))) {\n axisCopy.setExtremes(userMin, userMax, true, false);\n }\n });\n // Get the SVG from the container's innerHTML\n svg = chartCopy.getChartHTML();\n fireEvent(this, 'getSVG', { chartCopy: chartCopy });\n svg = chart.sanitizeSVG(svg, options);\n // free up memory\n options = null;\n chartCopy.destroy();\n discardElement(sandbox);\n return svg;\n }\n /**\n * @private\n * @function Highcharts.Chart#getSVGForExport\n */\n function getSVGForExport(options, chartOptions) {\n const chartExportingOptions = this.options.exporting;\n return this.getSVG(merge({ chart: { borderRadius: 0 } }, chartExportingOptions.chartOptions, chartOptions, {\n exporting: {\n sourceWidth: ((options && options.sourceWidth) ||\n chartExportingOptions.sourceWidth),\n sourceHeight: ((options && options.sourceHeight) ||\n chartExportingOptions.sourceHeight)\n }\n }));\n }\n /**\n * Make hyphenated property names out of camelCase\n * @private\n * @param {string} prop\n * Property name in camelCase\n * @return {string}\n * Hyphenated property name\n */\n function hyphenate(prop) {\n return prop.replace(/([A-Z])/g, function (a, b) {\n return '-' + b.toLowerCase();\n });\n }\n /**\n * Analyze inherited styles from stylesheets and add them inline\n *\n * @private\n * @function Highcharts.Chart#inlineStyles\n *\n * @todo What are the border styles for text about? In general, text has a\n * lot of properties.\n *\n * @todo Make it work with IE9 and IE10.\n *\n * @requires modules/exporting\n */\n function inlineStyles() {\n const denylist = inlineDenylist, allowlist = Exporting.inlineAllowlist, // For IE\n defaultStyles = {};\n let dummySVG;\n // Create an iframe where we read default styles without pollution from\n // this body\n const iframe = doc.createElement('iframe');\n css(iframe, {\n width: '1px',\n height: '1px',\n visibility: 'hidden'\n });\n doc.body.appendChild(iframe);\n const iframeDoc = (iframe.contentWindow && iframe.contentWindow.document);\n if (iframeDoc) {\n iframeDoc.body.appendChild(iframeDoc.createElementNS(SVG_NS, 'svg'));\n }\n /**\n * Call this on all elements and recurse to children\n * @private\n * @param {Highcharts.HTMLDOMElement} node\n * Element child\n */\n function recurse(node) {\n const filteredStyles = {};\n let styles, parentStyles, dummy, denylisted, allowlisted, i;\n /**\n * Check computed styles and whether they are in the allow/denylist\n * for styles or atttributes.\n * @private\n * @param {string} val\n * Style value\n * @param {string} prop\n * Style property name\n */\n function filterStyles(val, prop) {\n // Check against allowlist & denylist\n denylisted = allowlisted = false;\n if (allowlist.length) {\n // Styled mode in IE has a allowlist instead. Exclude all\n // props not in this list.\n i = allowlist.length;\n while (i-- && !allowlisted) {\n allowlisted = allowlist[i].test(prop);\n }\n denylisted = !allowlisted;\n }\n // Explicitly remove empty transforms\n if (prop === 'transform' && val === 'none') {\n denylisted = true;\n }\n i = denylist.length;\n while (i-- && !denylisted) {\n denylisted = (denylist[i].test(prop) ||\n typeof val === 'function');\n }\n if (!denylisted) {\n // If parent node has the same style, it gets inherited, no\n // need to inline it. Top-level props should be diffed\n // against parent (#7687).\n if ((parentStyles[prop] !== val ||\n node.nodeName === 'svg') &&\n defaultStyles[node.nodeName][prop] !== val) {\n // Attributes\n if (!inlineToAttributes ||\n inlineToAttributes.indexOf(prop) !== -1) {\n if (val) {\n node.setAttribute(hyphenate(prop), val);\n }\n // Styles\n }\n else {\n filteredStyles[prop] = val;\n }\n }\n }\n }\n if (iframeDoc &&\n node.nodeType === 1 &&\n unstyledElements.indexOf(node.nodeName) === -1) {\n styles = win.getComputedStyle(node, null);\n parentStyles = node.nodeName === 'svg' ?\n {} :\n win.getComputedStyle(node.parentNode, null);\n // Get default styles from the browser so that we don't have to\n // add these\n if (!defaultStyles[node.nodeName]) {\n /*\n if (!dummySVG) {\n dummySVG = doc.createElementNS(H.SVG_NS, 'svg');\n dummySVG.setAttribute('version', '1.1');\n doc.body.appendChild(dummySVG);\n }\n */\n dummySVG = iframeDoc.getElementsByTagName('svg')[0];\n dummy = iframeDoc.createElementNS(node.namespaceURI, node.nodeName);\n dummySVG.appendChild(dummy);\n // Get the defaults into a standard object (simple merge\n // won't do)\n const s = win.getComputedStyle(dummy, null), defaults = {};\n for (const key in s) {\n if (typeof s[key] === 'string' &&\n !/^[0-9]+$/.test(key)) {\n defaults[key] = s[key];\n }\n }\n defaultStyles[node.nodeName] = defaults;\n // Remove default fill, otherwise text disappears when\n // exported\n if (node.nodeName === 'text') {\n delete defaultStyles.text.fill;\n }\n dummySVG.removeChild(dummy);\n }\n // Loop through all styles and add them inline if they are ok\n for (const p in styles) {\n if (\n // Some browsers put lots of styles on the prototype...\n G.isFirefox ||\n G.isMS ||\n G.isSafari || // #16902\n // ... Chrome puts them on the instance\n Object.hasOwnProperty.call(styles, p)) {\n filterStyles(styles[p], p);\n }\n }\n // Apply styles\n css(node, filteredStyles);\n // Set default stroke width (needed at least for IE)\n if (node.nodeName === 'svg') {\n node.setAttribute('stroke-width', '1px');\n }\n if (node.nodeName === 'text') {\n return;\n }\n // Recurse\n [].forEach.call(node.children || node.childNodes, recurse);\n }\n }\n /**\n * Remove the dummy objects used to get defaults\n * @private\n */\n function tearDown() {\n dummySVG.parentNode.removeChild(dummySVG);\n // Remove trash from DOM that stayed after each exporting\n iframe.parentNode.removeChild(iframe);\n }\n recurse(this.container.querySelector('svg'));\n tearDown();\n }\n /**\n * Move the chart container(s) to another div.\n *\n * @function Highcharts#moveContainers\n *\n * @private\n *\n * @param {Highcharts.HTMLDOMElement} moveTo\n * Move target\n */\n function moveContainers(moveTo) {\n const chart = this;\n (chart.fixedDiv ? // When scrollablePlotArea is active (#9533)\n [chart.fixedDiv, chart.scrollingContainer] :\n [chart.container]).forEach(function (div) {\n moveTo.appendChild(div);\n });\n }\n /**\n * Add update methods to handle chart.update and chart.exporting.update and\n * chart.navigation.update. These must be added to the chart instance rather\n * than the Chart prototype in order to use the chart instance inside the\n * update function.\n * @private\n */\n function onChartInit() {\n const chart = this, \n /**\n * @private\n * @param {\"exporting\"|\"navigation\"} prop\n * Property name in option root\n * @param {Highcharts.ExportingOptions|Highcharts.NavigationOptions} options\n * Options to update\n * @param {boolean} [redraw=true]\n * Whether to redraw\n */\n update = (prop, options, redraw) => {\n chart.isDirtyExporting = true;\n merge(true, chart.options[prop], options);\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n chart.exporting = {\n update: function (options, redraw) {\n update('exporting', options, redraw);\n }\n };\n // Register update() method for navigation. Cannot be set the same way\n // as for exporting, because navigation options are shared with bindings\n // which has separate update() logic.\n ChartNavigationComposition\n .compose(chart).navigation\n .addUpdate((options, redraw) => {\n update('navigation', options, redraw);\n });\n }\n /**\n * Exporting module required. Clears away other elements in the page and\n * prints the chart as it is displayed. By default, when the exporting\n * module is enabled, a context button with a drop down menu in the upper\n * right corner accesses this function.\n *\n * @sample highcharts/members/chart-print/\n * Print from a HTML button\n *\n * @function Highcharts.Chart#print\n *\n *\n * @emits Highcharts.Chart#event:beforePrint\n * @emits Highcharts.Chart#event:afterPrint\n *\n * @requires modules/exporting\n */\n function print() {\n const chart = this;\n if (chart.isPrinting) { // block the button while in printing mode\n return;\n }\n printingChart = chart;\n if (!G.isSafari) {\n chart.beforePrint();\n }\n // Give the browser time to draw WebGL content, an issue that randomly\n // appears (at least) in Chrome ~67 on the Mac (#8708).\n setTimeout(() => {\n win.focus(); // #1510\n win.print();\n // allow the browser to prepare before reverting\n if (!G.isSafari) {\n setTimeout(() => {\n chart.afterPrint();\n }, 1000);\n }\n }, 1);\n }\n /**\n * Add the buttons on chart load\n * @private\n * @function Highcharts.Chart#renderExporting\n * @requires modules/exporting\n */\n function renderExporting() {\n const chart = this, exportingOptions = chart.options.exporting, buttons = exportingOptions.buttons, isDirty = chart.isDirtyExporting || !chart.exportSVGElements;\n chart.buttonOffset = 0;\n if (chart.isDirtyExporting) {\n chart.destroyExport();\n }\n if (isDirty && exportingOptions.enabled !== false) {\n chart.exportEvents = [];\n chart.exportingGroup = chart.exportingGroup ||\n chart.renderer.g('exporting-group').attr({\n zIndex: 3 // #4955, // #8392\n }).add();\n objectEach(buttons, function (button) {\n chart.addButton(button);\n });\n chart.isDirtyExporting = false;\n }\n }\n /**\n * Exporting module only. A collection of fixes on the produced SVG to\n * account for expando properties, browser bugs.\n * Returns a cleaned SVG.\n *\n * @private\n * @function Highcharts.Chart#sanitizeSVG\n * @param {string} svg\n * SVG code to sanitize\n * @param {Highcharts.Options} options\n * Chart options to apply\n * @return {string}\n * Sanitized SVG code\n * @requires modules/exporting\n */\n function sanitizeSVG(svg, options) {\n const split = svg.indexOf('') + 6;\n let html = svg.substr(split);\n // Remove any HTML added to the container after the SVG (#894, #9087)\n svg = svg.substr(0, split);\n // Move HTML into a foreignObject\n if (options && options.exporting && options.exporting.allowHTML) {\n if (html) {\n html = '' +\n '' +\n // Some tags needs to be closed in xhtml (#13726)\n html.replace(/(<(?:img|br).*?(?=\\>))>/g, '$1 />') +\n '' +\n '';\n svg = svg.replace('', html + '');\n }\n }\n svg = svg\n .replace(/zIndex=\"[^\"]+\"/g, '')\n .replace(/symbolName=\"[^\"]+\"/g, '')\n .replace(/jQuery[0-9]+=\"[^\"]+\"/g, '')\n .replace(/url\\((\"|")(.*?)(\"|")\\;?\\)/g, 'url($2)')\n .replace(/url\\([^#]+#/g, 'url(#')\n .replace(/|undefined}\n */ /**\n * Indicates a separator line instead of an item.\n *\n * @name Highcharts.ExportingMenuObject#separator\n * @type {boolean|undefined}\n */\n /**\n * Possible MIME types for exporting.\n *\n * @typedef {\"image/png\"|\"image/jpeg\"|\"application/pdf\"|\"image/svg+xml\"} Highcharts.ExportingMimeTypeValue\n */\n (''); // keeps doclets above in transpiled file\n /* *\n *\n * API Options\n *\n * */\n /**\n * Fires after a chart is printed through the context menu item or the\n * `Chart.print` method.\n *\n * @sample highcharts/chart/events-beforeprint-afterprint/\n * Rescale the chart to print\n *\n * @type {Highcharts.ExportingAfterPrintCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Chart\n * @requires modules/exporting\n * @apioption chart.events.afterPrint\n */\n /**\n * Fires before a chart is printed through the context menu item or\n * the `Chart.print` method.\n *\n * @sample highcharts/chart/events-beforeprint-afterprint/\n * Rescale the chart to print\n *\n * @type {Highcharts.ExportingBeforePrintCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Chart\n * @requires modules/exporting\n * @apioption chart.events.beforePrint\n */\n (''); // keeps doclets above in transpiled file\n\n return Exporting;\n });\n _registerModule(_modules, 'masters/modules/exporting.src.js', [_modules['Core/Globals.js'], _modules['Extensions/Exporting/Exporting.js'], _modules['Core/HttpUtilities.js']], function (Highcharts, Exporting, HttpUtilities) {\n\n const G = Highcharts;\n G.HttpUtilities = HttpUtilities;\n G.ajax = HttpUtilities.ajax;\n G.getJSON = HttpUtilities.getJSON;\n G.post = HttpUtilities.post;\n Exporting.compose(G.Chart, G.Renderer);\n\n });\n}));","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {Context} from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","export const base64 =\n 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({counter: counter.value, increment});\n }\n }\n\n return increments;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({counter: counter.value, reset});\n }\n }\n\n return resets;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({open, close});\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType;\n backgroundClip: ReturnType;\n backgroundColor: Color;\n backgroundImage: ReturnType;\n backgroundOrigin: ReturnType;\n backgroundPosition: ReturnType;\n backgroundRepeat: ReturnType;\n backgroundSize: ReturnType;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType;\n borderTopRightRadius: ReturnType;\n borderBottomRightRadius: ReturnType;\n borderBottomLeftRadius: ReturnType;\n borderTopStyle: ReturnType;\n borderRightStyle: ReturnType;\n borderBottomStyle: ReturnType;\n borderLeftStyle: ReturnType;\n borderTopWidth: ReturnType;\n borderRightWidth: ReturnType;\n borderBottomWidth: ReturnType;\n borderLeftWidth: ReturnType;\n boxShadow: ReturnType;\n color: Color;\n direction: ReturnType;\n display: ReturnType;\n float: ReturnType;\n fontFamily: ReturnType;\n fontSize: LengthPercentage;\n fontStyle: ReturnType;\n fontVariant: ReturnType;\n fontWeight: ReturnType;\n letterSpacing: ReturnType;\n lineBreak: ReturnType;\n lineHeight: CSSValue;\n listStyleImage: ReturnType;\n listStylePosition: ReturnType;\n listStyleType: ReturnType;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType;\n position: ReturnType;\n textAlign: ReturnType;\n textDecorationColor: Color;\n textDecorationLine: ReturnType;\n textShadow: ReturnType;\n textTransform: ReturnType;\n transform: ReturnType;\n transformOrigin: ReturnType;\n visibility: ReturnType;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType;\n wordBreak: ReturnType;\n zIndex: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType;\n quotes: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType;\n counterReset: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","export const base64 =\n 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline tags\n return isGreenPixel(data)\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n width: number,\n height: number,\n x: number,\n y: number,\n node: Node\n): SVGForeignObjectElement => {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n};\n\nexport const FEATURES = {\n get SUPPORT_RANGE_BOUNDS(): boolean {\n 'use strict';\n const value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value});\n return value;\n },\n get SUPPORT_WORD_BREAKING(): boolean {\n 'use strict';\n const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {value});\n return value;\n },\n get SUPPORT_SVG_DRAWING(): boolean {\n 'use strict';\n const value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value});\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise {\n 'use strict';\n const value =\n typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value});\n return value;\n },\n get SUPPORT_CORS_IMAGES(): boolean {\n 'use strict';\n const value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {value});\n return value;\n },\n get SUPPORT_RESPONSE_TYPE(): boolean {\n 'use strict';\n const value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {value});\n return value;\n },\n get SUPPORT_CORS_XHR(): boolean {\n 'use strict';\n const value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value});\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n 'use strict';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {value});\n return value;\n }\n};\n","import {OVERFLOW_WRAP} from '../property-descriptors/overflow-wrap';\nimport {CSSParsedDeclaration} from '../index';\nimport {fromCodePoint, LineBreaker, toCodePoints} from 'css-line-break';\nimport {splitGraphemes} from 'text-segmentation';\nimport {Bounds, parseBounds} from './bounds';\nimport {FEATURES} from '../../core/features';\nimport {Context} from '../../core/context';\n\nexport class TextBounds {\n readonly text: string;\n readonly bounds: Bounds;\n\n constructor(text: string, bounds: Bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n}\n\nexport const parseTextBounds = (\n context: Context,\n value: string,\n styles: CSSParsedDeclaration,\n node: Text\n): TextBounds[] => {\n const textList = breakText(value, styles);\n const textBounds: TextBounds[] = [];\n let offset = 0;\n textList.forEach((text) => {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n const clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n const subSegments = segmentGraphemes(text);\n let subOffset = 0;\n subSegments.forEach((subSegment) => {\n textBounds.push(\n new TextBounds(\n subSegment,\n Bounds.fromDOMRectList(\n context,\n createRange(node, subOffset + offset, subSegment.length).getClientRects()\n )\n )\n );\n subOffset += subSegment.length;\n });\n } else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n } else {\n const replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n\n return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n const ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n const wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n const parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n const bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n\n return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n const ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n const range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {granularity: 'grapheme'});\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n const breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n\n const words = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n const value = bk.value.slice();\n const codePoints = toCodePoints(value);\n let word = '';\n codePoints.forEach((codePoint) => {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word += fromCodePoint(codePoint);\n } else {\n if (word.length) {\n words.push(word);\n }\n words.push(fromCodePoint(codePoint));\n word = '';\n }\n });\n\n if (word.length) {\n words.push(word);\n }\n }\n }\n\n return words;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TEXT_TRANSFORM} from '../css/property-descriptors/text-transform';\nimport {parseTextBounds, TextBounds} from '../css/layout/text';\nimport {Context} from '../core/context';\n\nexport class TextContainer {\n text: string;\n textBounds: TextBounds[];\n\n constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n switch (transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n};\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n src: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: HTMLImageElement) {\n super(context, img);\n this.src = img.currentSrc || img.src;\n this.intrinsicWidth = img.naturalWidth;\n this.intrinsicHeight = img.naturalHeight;\n this.context.cache.addImage(this.src);\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n canvas: HTMLCanvasElement;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, canvas: HTMLCanvasElement) {\n super(context, canvas);\n this.canvas = canvas;\n this.intrinsicWidth = canvas.width;\n this.intrinsicHeight = canvas.height;\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {parseBounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n svg: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: SVGSVGElement) {\n super(context, img);\n const s = new XMLSerializer();\n const bounds = parseBounds(context, img);\n img.setAttribute('width', `${bounds.width}px`);\n img.setAttribute('height', `${bounds.height}px`);\n\n this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n this.intrinsicWidth = img.width.baseVal.value;\n this.intrinsicHeight = img.height.baseVal.value;\n\n this.context.cache.addImage(this.svg);\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n readonly value: number;\n\n constructor(context: Context, element: HTMLLIElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n readonly start: number;\n readonly reversed: boolean;\n\n constructor(context: Context, element: HTMLOListElement) {\n super(context, element);\n this.start = element.start;\n this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BACKGROUND_ORIGIN} from '../../css/property-descriptors/background-origin';\nimport {TokenType} from '../../css/syntax/tokenizer';\nimport {LengthPercentageTuple} from '../../css/types/length-percentage';\nimport {Bounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n readonly type: string;\n readonly checked: boolean;\n readonly value: string;\n\n constructor(context: Context, input: HTMLInputElement) {\n super(context, input);\n this.type = input.type.toLowerCase();\n this.checked = input.checked;\n this.value = getInputValue(input);\n\n if (this.type === CHECKBOX || this.type === RADIO) {\n this.styles.backgroundColor = 0xdededeff;\n this.styles.borderTopColor =\n this.styles.borderRightColor =\n this.styles.borderBottomColor =\n this.styles.borderLeftColor =\n 0xa5a5a5ff;\n this.styles.borderTopWidth =\n this.styles.borderRightWidth =\n this.styles.borderBottomWidth =\n this.styles.borderLeftWidth =\n 1;\n this.styles.borderTopStyle =\n this.styles.borderRightStyle =\n this.styles.borderBottomStyle =\n this.styles.borderLeftStyle =\n BORDER_STYLE.SOLID;\n this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n this.bounds = reformatInputBounds(this.bounds);\n }\n\n switch (this.type) {\n case CHECKBOX:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLSelectElement) {\n super(context, element);\n const option = element.options[element.selectedIndex || 0];\n this.value = option ? option.text || '' : '';\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLTextAreaElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import {ElementContainer} from '../element-container';\nimport {parseTree} from '../node-parser';\nimport {Color, parseColor, COLORS, isTransparent} from '../../css/types/color';\nimport {Context} from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n src: string;\n width: number;\n height: number;\n tree?: ElementContainer;\n backgroundColor: Color;\n\n constructor(context: Context, iframe: HTMLIFrameElement) {\n super(context, iframe);\n this.src = iframe.src;\n this.width = parseInt(iframe.width, 10) || 0;\n this.height = parseInt(iframe.height, 10) || 0;\n this.backgroundColor = this.styles.backgroundColor;\n try {\n if (\n iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement\n ) {\n this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n\n this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n } catch (e) {}\n }\n}\n","import {CSSParsedDeclaration} from '../css';\nimport {ElementContainer, FLAGS} from './element-container';\nimport {TextContainer} from './text-container';\nimport {ImageElementContainer} from './replaced-elements/image-element-container';\nimport {CanvasElementContainer} from './replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from './replaced-elements/svg-element-container';\nimport {LIElementContainer} from './elements/li-element-container';\nimport {OLElementContainer} from './elements/ol-element-container';\nimport {InputElementContainer} from './replaced-elements/input-element-container';\nimport {SelectElementContainer} from './elements/select-element-container';\nimport {TextareaElementContainer} from './elements/textarea-element-container';\nimport {IFrameElementContainer} from './replaced-elements/iframe-element-container';\nimport {Context} from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n } else {\n const container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= FLAGS.IS_LIST_OWNER;\n }\n\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n } else if (\n !isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)\n ) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n\n return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n const container = createContainer(context, element);\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n parseNodeTree(context, element, container, container);\n return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n return (\n container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent())\n );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n","import {LIST_STYLE_TYPE} from '../../property-descriptors/list-style-type';\nimport {fromCodePoint} from 'css-line-break';\nimport {contains} from '../../../core/bitwise';\nimport {CSSParsedCounterDeclaration} from '../../index';\n\nexport class CounterState {\n private readonly counters: {[key: string]: number[]} = {};\n\n getCounterValue(name: string): number {\n const counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n }\n\n getCounterValues(name: string): readonly number[] {\n const counter = this.counters[name];\n return counter ? counter : [];\n }\n\n pop(counters: string[]): void {\n counters.forEach((counter) => this.counters[counter].pop());\n }\n\n parse(style: CSSParsedCounterDeclaration): string[] {\n const counterIncrement = style.counterIncrement;\n const counterReset = style.counterReset;\n let canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach((entry) => {\n const counter = this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n const counterNames: string[] = [];\n if (canReset) {\n counterReset.forEach((entry) => {\n let counter = this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n }\n}\n\ninterface CounterSymbols {\n integers: number[];\n values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n};\n\nconst HEBREW: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n};\n\nconst createAdditiveCounter = (\n value: number,\n min: number,\n max: number,\n symbols: CounterSymbols,\n fallback: LIST_STYLE_TYPE,\n suffix: string\n) => {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return (\n symbols.integers.reduce((string, integer, index) => {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix\n );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n value: number,\n codePointRangeLength: number,\n isNumeric: boolean,\n resolver: (codePoint: number) => string\n): string => {\n let string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n};\n\nconst createCounterStyleFromRange = (\n value: number,\n codePointRangeStart: number,\n codePointRangeEnd: number,\n isNumeric: boolean,\n suffix: string\n): string => {\n const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n return (\n (value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n ) +\n suffix)\n );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n const codePointRangeLength = symbols.length;\n return (\n createCounterStyleWithSymbolResolver(\n Math.abs(value),\n codePointRangeLength,\n false,\n (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n ) + suffix\n );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n value: number,\n numbers: string,\n multipliers: string,\n negativeSign: string,\n suffix: string,\n flags: number\n): string => {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n let tmp = Math.abs(value);\n let string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n const coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (\n coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n ) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n const defaultSuffix = appendSuffix ? '. ' : '';\n const cjkSuffix = appendSuffix ? '、' : '';\n const koreanSuffix = appendSuffix ? ', ' : '';\n const spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? `0${string}` : string;\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(\n value,\n 1,\n 3999,\n ROMAN_UPPER,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(\n value,\n 1,\n 9999,\n ARMENIAN,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參肆伍陸柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹贰叁肆伍陆柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(\n value,\n '零壱弐参四伍六七八九',\n '拾百千万',\n JAPANESE_NEGATIVE,\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(\n value,\n '영일이삼사오육칠팔구',\n '십백천만',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參四五六七八九',\n '拾百千',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(\n value,\n 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n );\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n );\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(\n value,\n 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n};\n","import {ElementContainer} from '../dom/element-container';\nimport {getAbsoluteValue, getAbsoluteValueForTuple} from '../css/types/length-percentage';\nimport {Vector} from './vector';\nimport {BezierCurve} from './bezier-curve';\nimport {Path} from './path';\n\nexport class BoundCurves {\n readonly topLeftBorderDoubleOuterBox: Path;\n readonly topRightBorderDoubleOuterBox: Path;\n readonly bottomRightBorderDoubleOuterBox: Path;\n readonly bottomLeftBorderDoubleOuterBox: Path;\n readonly topLeftBorderDoubleInnerBox: Path;\n readonly topRightBorderDoubleInnerBox: Path;\n readonly bottomRightBorderDoubleInnerBox: Path;\n readonly bottomLeftBorderDoubleInnerBox: Path;\n readonly topLeftBorderStroke: Path;\n readonly topRightBorderStroke: Path;\n readonly bottomRightBorderStroke: Path;\n readonly bottomLeftBorderStroke: Path;\n readonly topLeftBorderBox: Path;\n readonly topRightBorderBox: Path;\n readonly bottomRightBorderBox: Path;\n readonly bottomLeftBorderBox: Path;\n readonly topLeftPaddingBox: Path;\n readonly topRightPaddingBox: Path;\n readonly bottomRightPaddingBox: Path;\n readonly bottomLeftPaddingBox: Path;\n readonly topLeftContentBox: Path;\n readonly topRightContentBox: Path;\n readonly bottomRightContentBox: Path;\n readonly bottomLeftContentBox: Path;\n\n constructor(element: ElementContainer) {\n const styles = element.styles;\n const bounds = element.bounds;\n\n let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n const factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n const maxFactor = Math.max(...factors);\n\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n\n const topWidth = bounds.width - trh;\n const rightHeight = bounds.height - brv;\n const bottomWidth = bounds.width - brh;\n const leftHeight = bounds.height - blv;\n\n const borderTopWidth = styles.borderTopWidth;\n const borderRightWidth = styles.borderRightWidth;\n const borderBottomWidth = styles.borderBottomWidth;\n const borderLeftWidth = styles.borderLeftWidth;\n\n const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + borderTopWidth / 3,\n tlh - borderLeftWidth / 3,\n tlv - borderTopWidth / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 3,\n trh - borderRightWidth / 3,\n trv - borderTopWidth / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 3,\n brv - borderBottomWidth / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 3,\n bounds.top + bounds.height - borderBottomWidth / 3\n );\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 3,\n blv - borderBottomWidth / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3,\n tlh - (borderLeftWidth * 2) / 3,\n tlv - (borderTopWidth * 2) / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + (borderTopWidth * 2) / 3,\n trh - (borderRightWidth * 2) / 3,\n trv - (borderTopWidth * 2) / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3\n );\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - (borderRightWidth * 2) / 3,\n brv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + leftHeight,\n blh - (borderLeftWidth * 2) / 3,\n blv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + borderTopWidth / 2,\n tlh - borderLeftWidth / 2,\n tlv - borderTopWidth / 2,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 2,\n trh - borderRightWidth / 2,\n trv - borderTopWidth / 2,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 2,\n brv - borderBottomWidth / 2,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 2,\n bounds.top + bounds.height - borderBottomWidth / 2\n );\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 2,\n blv - borderBottomWidth / 2,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + borderTopWidth,\n Math.max(0, tlh - borderLeftWidth),\n Math.max(0, tlv - borderTopWidth),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n bounds.top + borderTopWidth,\n topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n Math.max(0, trv - borderTopWidth),\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n Math.max(0, brh - borderRightWidth),\n Math.max(0, brv - borderBottomWidth),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth,\n bounds.top + bounds.height - borderBottomWidth\n );\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n Math.max(0, blh - borderLeftWidth),\n Math.max(0, blv - borderBottomWidth),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + borderTopWidth + paddingTop,\n Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n Math.max(0, tlv - (borderTopWidth + paddingTop)),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n bounds.top + borderTopWidth + paddingTop,\n topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n trv - (borderTopWidth + paddingTop),\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + borderTopWidth + paddingTop\n );\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n Math.max(0, brh - (borderRightWidth + paddingRight)),\n brv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + leftHeight,\n Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n blv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n }\n}\n\nenum CORNER {\n TOP_LEFT = 0,\n TOP_RIGHT = 1,\n BOTTOM_RIGHT = 2,\n BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n const ox = r1 * kappa; // control point offset horizontal\n const oy = r2 * kappa; // control point offset vertical\n const xm = x + r1; // x-middle\n const ym = y + r2; // y-middle\n\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(\n new Vector(x, ym),\n new Vector(x, ym - oy),\n new Vector(xm - ox, y),\n new Vector(xm, y)\n );\n case CORNER.TOP_RIGHT:\n return new BezierCurve(\n new Vector(x, y),\n new Vector(x + ox, y),\n new Vector(xm, ym - oy),\n new Vector(xm, ym)\n );\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(\n new Vector(xm, y),\n new Vector(xm, y + oy),\n new Vector(x + ox, ym),\n new Vector(x, ym)\n );\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(\n new Vector(xm, ym),\n new Vector(xm - ox, ym),\n new Vector(x, y + oy),\n new Vector(x, y)\n );\n }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n};\n","import {FEATURES} from './features';\nimport {Context} from './context';\n\nexport class CacheStorage {\n private static _link?: HTMLAnchorElement;\n private static _origin = 'about:blank';\n\n static getOrigin(url: string): string {\n const link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n\n static isSameOrigin(src: string): boolean {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n }\n\n static setContext(window: Window): void {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n }\n}\n\nexport interface ResourceOptions {\n imageTimeout: number;\n useCORS: boolean;\n allowTaint: boolean;\n proxy?: string;\n}\n\nexport class Cache {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _cache: {[key: string]: Promise} = {};\n\n constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n addImage(src: string): Promise {\n const result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(() => {\n // prevent unhandled rejection\n });\n return result;\n }\n\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n match(src: string): Promise {\n return this._cache[src];\n }\n\n private async loadImage(key: string) {\n const isSameOrigin = CacheStorage.isSameOrigin(key);\n const useCORS =\n !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n const useProxy =\n !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (\n !isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS\n ) {\n return;\n }\n\n let src = key;\n if (useProxy) {\n src = await this.proxy(src);\n }\n\n this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(() => resolve(img), 500);\n }\n if (this._options.imageTimeout > 0) {\n setTimeout(\n () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n this._options.imageTimeout\n );\n }\n });\n }\n\n private has(key: string): boolean {\n return typeof this._cache[key] !== 'undefined';\n }\n\n keys(): Promise {\n return Promise.resolve(Object.keys(this._cache));\n }\n\n private proxy(src: string): Promise {\n const proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n const key = src.substring(0, 256);\n\n return new Promise((resolve, reject) => {\n const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n const reader = new FileReader();\n reader.addEventListener('load', () => resolve(reader.result as string), false);\n reader.addEventListener('error', (e) => reject(e), false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n }\n };\n\n xhr.onerror = reject;\n const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (this._options.imageTimeout) {\n const timeout = this._options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n }\n\n xhr.send();\n });\n }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n","import {IPath, Path, PathType} from './path';\n\nexport class Vector implements IPath {\n type: PathType;\n x: number;\n y: number;\n\n constructor(x: number, y: number) {\n this.type = PathType.VECTOR;\n this.x = x;\n this.y = y;\n }\n\n add(deltaX: number, deltaY: number): Vector {\n return new Vector(this.x + deltaX, this.y + deltaY);\n }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n","import {Vector} from './vector';\nimport {IPath, PathType, Path} from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n type: PathType;\n start: Vector;\n startControl: Vector;\n endControl: Vector;\n end: Vector;\n\n constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n this.type = PathType.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n\n subdivide(t: number, firstHalf: boolean): BezierCurve {\n const ab = lerp(this.start, this.startControl, t);\n const bc = lerp(this.startControl, this.endControl, t);\n const cd = lerp(this.endControl, this.end, t);\n const abbc = lerp(ab, bc, t);\n const bccd = lerp(bc, cd, t);\n const dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n }\n\n add(deltaX: number, deltaY: number): BezierCurve {\n return new BezierCurve(\n this.start.add(deltaX, deltaY),\n this.startControl.add(deltaX, deltaY),\n this.endControl.add(deltaX, deltaY),\n this.end.add(deltaX, deltaY)\n );\n }\n\n reverse(): BezierCurve {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n","import {Matrix} from '../css/property-descriptors/transform';\nimport {Path} from './path';\n\nexport const enum EffectType {\n TRANSFORM = 0,\n CLIP = 1,\n OPACITY = 2\n}\n\nexport const enum EffectTarget {\n BACKGROUND_BORDERS = 1 << 1,\n CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n readonly type: EffectType;\n readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n readonly type: EffectType = EffectType.TRANSFORM;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n readonly type: EffectType = EffectType.CLIP;\n\n constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n readonly type: EffectType = EffectType.OPACITY;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n","import {BezierCurve} from './bezier-curve';\nimport {Vector} from './vector';\nexport const enum PathType {\n VECTOR = 0,\n BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n type: PathType;\n add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n if (a.length === b.length) {\n return a.some((v, i) => v === b[i]);\n }\n\n return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n return path.map((point, index) => {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n};\n\nexport type Path = Vector | BezierCurve;\n","import {ElementContainer, FLAGS} from '../dom/element-container';\nimport {contains} from '../core/bitwise';\nimport {BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath} from './bound-curves';\nimport {ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect} from './effects';\nimport {OVERFLOW} from '../css/property-descriptors/overflow';\nimport {equalPath} from './path';\nimport {DISPLAY} from '../css/property-descriptors/display';\nimport {OLElementContainer} from '../dom/elements/ol-element-container';\nimport {LIElementContainer} from '../dom/elements/li-element-container';\nimport {createCounterText} from '../css/types/functions/counter';\nimport {POSITION} from '../css/property-descriptors/position';\n\nexport class StackingContext {\n element: ElementPaint;\n negativeZIndex: StackingContext[];\n zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n positiveZIndex: StackingContext[];\n nonPositionedFloats: StackingContext[];\n nonPositionedInlineLevel: StackingContext[];\n inlineLevel: ElementPaint[];\n nonInlineLevel: ElementPaint[];\n\n constructor(container: ElementPaint) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n}\n\nexport class ElementPaint {\n readonly effects: IElementEffect[] = [];\n readonly curves: BoundCurves;\n listValue?: string;\n\n constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n\n if (this.container.styles.transform !== null) {\n const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n const matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n\n if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(this.curves);\n const paddingBox = calculatePaddingBoxPath(this.curves);\n\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n } else {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n }\n }\n }\n\n getEffects(target: EffectTarget): IElementEffect[] {\n let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n let parent = this.parent;\n const effects = this.effects.slice(0);\n while (parent) {\n const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n effects.unshift(...croplessEffects);\n inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(parent.curves);\n const paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(\n new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n );\n }\n }\n } else {\n effects.unshift(...croplessEffects);\n }\n\n parent = parent.parent;\n }\n\n return effects.filter((effect) => contains(effect.target, target));\n }\n}\n\nconst parseStackTree = (\n parent: ElementPaint,\n stackingContext: StackingContext,\n realStackingContext: StackingContext,\n listItems: ElementPaint[]\n) => {\n parent.container.elements.forEach((child) => {\n const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n const paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n listItems.push(paintContainer);\n }\n\n const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n if (treatAsRealStackingContext || createsStackingContext) {\n const parentStack =\n treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n const stack = new StackingContext(paintContainer);\n\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n const order = child.styles.zIndex.order;\n if (order < 0) {\n let index = 0;\n\n parentStack.negativeZIndex.some((current, i) => {\n if (order > current.element.container.styles.zIndex.order) {\n index = i;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.negativeZIndex.splice(index, 0, stack);\n } else if (order > 0) {\n let index = 0;\n parentStack.positiveZIndex.some((current, i) => {\n if (order >= current.element.container.styles.zIndex.order) {\n index = i + 1;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.positiveZIndex.splice(index, 0, stack);\n } else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n } else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n } else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n\n parseStackTree(\n paintContainer,\n stack,\n treatAsRealStackingContext ? stack : realStackingContext,\n listOwnerItems\n );\n } else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n } else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n\n if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n processListItems(child, listOwnerItems);\n }\n });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (let i = 0; i < elements.length; i++) {\n const item = elements[i];\n if (\n item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0\n ) {\n numbering = item.container.value;\n }\n\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n numbering += reversed ? -1 : 1;\n }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n const paintContainer = new ElementPaint(container, null);\n const root = new StackingContext(paintContainer);\n const listItems: ElementPaint[] = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n};\n","import {Path} from './path';\nimport {BoundCurves} from './bound-curves';\nimport {isBezierCurve} from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox,\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox,\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox,\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n } else {\n path.push(inner2);\n }\n\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n } else {\n path.push(inner1);\n }\n\n return path;\n};\n","import {getAbsoluteValue} from '../css/types/length-percentage';\nimport {Bounds} from '../css/layout/bounds';\nimport {ElementContainer} from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n const bounds = element.bounds;\n const styles = element.styles;\n return bounds.add(\n styles.borderLeftWidth,\n styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth),\n -(styles.borderTopWidth + styles.borderBottomWidth)\n );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n const styles = element.styles;\n const bounds = element.bounds;\n\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n return bounds.add(\n paddingLeft + styles.borderLeftWidth,\n paddingTop + styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n );\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {BACKGROUND_ORIGIN} from '../css/property-descriptors/background-origin';\nimport {ElementContainer} from '../dom/element-container';\nimport {BACKGROUND_SIZE, BackgroundSizeInfo} from '../css/property-descriptors/background-size';\nimport {Vector} from './vector';\nimport {BACKGROUND_REPEAT} from '../css/property-descriptors/background-repeat';\nimport {getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage} from '../css/types/length-percentage';\nimport {CSSValue, isIdentToken} from '../css/syntax/parser';\nimport {contentBox, paddingBox} from './box-sizing';\nimport {Path} from './path';\nimport {BACKGROUND_CLIP} from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n backgroundOrigin: BACKGROUND_ORIGIN,\n element: ElementContainer\n): Bounds => {\n if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n container: ElementContainer,\n index: number,\n intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n const backgroundPositioningArea = calculateBackgroundPositioningArea(\n getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n container\n );\n\n const backgroundPaintingArea = calculateBackgroundPaintingArea(\n getBackgroundValueForIndex(container.styles.backgroundClip, index),\n container\n );\n\n const backgroundImageSize = calculateBackgroundSize(\n getBackgroundValueForIndex(container.styles.backgroundSize, index),\n intrinsicSize,\n backgroundPositioningArea\n );\n\n const [sizeWidth, sizeHeight] = backgroundImageSize;\n\n const position = getAbsoluteValueForTuple(\n getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n backgroundPositioningArea.width - sizeWidth,\n backgroundPositioningArea.height - sizeHeight\n );\n\n const path = calculateBackgroundRepeatPath(\n getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n position,\n backgroundImageSize,\n backgroundPositioningArea,\n backgroundPaintingArea\n );\n\n const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n size: BackgroundSizeInfo[],\n [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n bounds: Bounds\n): [number, number] => {\n const [first, second] = size;\n\n if (!first) {\n return [0, 0];\n }\n\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n\n const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n const targetRatio = bounds.width / bounds.height;\n\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n\n return [bounds.width, bounds.height];\n }\n\n const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth as number, intrinsicHeight as number];\n }\n\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n const width = hasIntrinsicWidth\n ? (intrinsicWidth as number)\n : (intrinsicHeight as number) * (intrinsicProportion as number);\n const height = hasIntrinsicHeight\n ? (intrinsicHeight as number)\n : (intrinsicWidth as number) / (intrinsicProportion as number);\n return [width, height];\n }\n\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n return [width, height];\n }\n\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n let width = 0;\n let height = 0;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (isAuto(first)) {\n width = height * (intrinsicProportion as number);\n } else if (!second || isAuto(second)) {\n height = width / (intrinsicProportion as number);\n }\n\n return [width, height];\n }\n\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n\n let width = null;\n let height = null;\n\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n : bounds.height;\n }\n\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n : bounds.width;\n }\n\n if (width !== null && height !== null) {\n return [width, height];\n }\n\n throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = (values: T[], index: number): T => {\n const value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n\n return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n repeat: BACKGROUND_REPEAT,\n [x, y]: [number, number],\n [width, height]: [number, number],\n backgroundPositioningArea: Bounds,\n backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n switch (repeat) {\n case BACKGROUND_REPEAT.REPEAT_X:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(height + backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left),\n Math.round(height + backgroundPositioningArea.top + y)\n )\n ];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n )\n ];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y + height)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y + height)\n )\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n )\n ];\n }\n};\n","export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n","import {SMALL_IMAGE} from '../core/util';\nexport interface FontMetric {\n baseline: number;\n middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n private readonly _data: {[key: string]: FontMetric};\n private readonly _document: Document;\n\n constructor(document: Document) {\n this._data = {};\n this._document = document;\n }\n\n private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n const container = this._document.createElement('div');\n const img = this._document.createElement('img');\n const span = this._document.createElement('span');\n\n const body = this._document.body as HTMLBodyElement;\n\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n\n body.appendChild(container);\n\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n const baseline = img.offsetTop - span.offsetTop + 2;\n\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n\n const middle = img.offsetTop - container.offsetTop + 2;\n\n body.removeChild(container);\n\n return {baseline, middle};\n }\n getMetrics(fontFamily: string, fontSize: string): FontMetric {\n const key = `${fontFamily} ${fontSize}`;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n\n return this._data[key];\n }\n}\n","import {Context} from '../core/context';\nimport {RenderConfigurations} from './canvas/canvas-renderer';\n\nexport class Renderer {\n constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n","import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking-context';\nimport {asString, Color, isTransparent} from '../../css/types/color';\nimport {ElementContainer, FLAGS} from '../../dom/element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {CSSParsedDeclaration} from '../../css';\nimport {TextContainer} from '../../dom/text-container';\nimport {Path, transformPath} from '../path';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath} from '../bound-curves';\nimport {BezierCurve, isBezierCurve} from '../bezier-curve';\nimport {Vector} from '../vector';\nimport {CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient} from '../../css/types/image';\nimport {\n parsePathForBorder,\n parsePathForBorderDoubleInner,\n parsePathForBorderDoubleOuter,\n parsePathForBorderStroke\n} from '../border';\nimport {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background';\nimport {isDimensionToken} from '../../css/syntax/parser';\nimport {segmentGraphemes, TextBounds} from '../../css/layout/text';\nimport {ImageElementContainer} from '../../dom/replaced-elements/image-element-container';\nimport {contentBox} from '../box-sizing';\nimport {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from '../../dom/replaced-elements/svg-element-container';\nimport {ReplacedElementContainer} from '../../dom/replaced-elements';\nimport {EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect} from '../effects';\nimport {contains} from '../../core/bitwise';\nimport {calculateGradientDirection, calculateRadius, processColorStops} from '../../css/types/functions/gradient';\nimport {FIFTY_PERCENT, getAbsoluteValue} from '../../css/types/length-percentage';\nimport {TEXT_DECORATION_LINE} from '../../css/property-descriptors/text-decoration-line';\nimport {FontMetrics} from '../font-metrics';\nimport {DISPLAY} from '../../css/property-descriptors/display';\nimport {Bounds} from '../../css/layout/bounds';\nimport {LIST_STYLE_TYPE} from '../../css/property-descriptors/list-style-type';\nimport {computeLineHeight} from '../../css/property-descriptors/line-height';\nimport {CHECKBOX, INPUT_COLOR, InputElementContainer, RADIO} from '../../dom/replaced-elements/input-element-container';\nimport {TEXT_ALIGN} from '../../css/property-descriptors/text-align';\nimport {TextareaElementContainer} from '../../dom/elements/textarea-element-container';\nimport {SelectElementContainer} from '../../dom/elements/select-element-container';\nimport {IFrameElementContainer} from '../../dom/replaced-elements/iframe-element-container';\nimport {TextShadow} from '../../css/property-descriptors/text-shadow';\nimport {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\nimport {DIRECTION} from '../../css/property-descriptors/direction';\n\nexport type RenderConfigurations = RenderOptions & {\n backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n scale: number;\n canvas?: HTMLCanvasElement;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n private readonly _activeEffects: IElementEffect[] = [];\n private readonly fontMetrics: FontMetrics;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n if (!options.canvas) {\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n }\n this.fontMetrics = new FontMetrics(document);\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.ctx.textBaseline = 'bottom';\n this._activeEffects = [];\n this.context.logger.debug(\n `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n );\n }\n\n applyEffects(effects: IElementEffect[]): void {\n while (this._activeEffects.length) {\n this.popEffect();\n }\n\n effects.forEach((effect) => this.applyEffect(effect));\n }\n\n applyEffect(effect: IElementEffect): void {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(\n effect.matrix[0],\n effect.matrix[1],\n effect.matrix[2],\n effect.matrix[3],\n effect.matrix[4],\n effect.matrix[5]\n );\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n\n this._activeEffects.push(effect);\n }\n\n popEffect(): void {\n this._activeEffects.pop();\n this.ctx.restore();\n }\n\n async renderStack(stack: StackingContext): Promise {\n const styles = stack.element.container.styles;\n if (styles.isVisible()) {\n await this.renderStackContent(stack);\n }\n }\n\n async renderNode(paint: ElementPaint): Promise {\n if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n\n if (paint.container.styles.isVisible()) {\n await this.renderNodeBackgroundAndBorders(paint);\n await this.renderNodeContent(paint);\n }\n }\n\n renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n if (letterSpacing === 0) {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n } else {\n const letters = segmentGraphemes(text.text);\n letters.reduce((left, letter) => {\n this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n return left + this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n }\n\n private createFontStyle(styles: CSSParsedDeclaration): string[] {\n const fontVariant = styles.fontVariant\n .filter((variant) => variant === 'normal' || variant === 'small-caps')\n .join('');\n const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n const fontSize = isDimensionToken(styles.fontSize)\n ? `${styles.fontSize.number}${styles.fontSize.unit}`\n : `${styles.fontSize.number}px`;\n\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n }\n\n async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise {\n const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n\n this.ctx.font = font;\n\n this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n const paintOrder = styles.paintOrder;\n\n text.textBounds.forEach((text) => {\n paintOrder.forEach((paintOrderLayer) => {\n switch (paintOrderLayer) {\n case PAINT_ORDER_LAYER.FILL:\n this.ctx.fillStyle = asString(styles.color);\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n const textShadows: TextShadow = styles.textShadow;\n\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach((textShadow) => {\n this.ctx.shadowColor = asString(textShadow.color);\n this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n this.ctx.shadowBlur = textShadow.blur.number;\n\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n });\n\n this.ctx.shadowColor = '';\n this.ctx.shadowOffsetX = 0;\n this.ctx.shadowOffsetY = 0;\n this.ctx.shadowBlur = 0;\n }\n\n if (styles.textDecorationLine.length) {\n this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n styles.textDecorationLine.forEach((textDecorationLine) => {\n switch (textDecorationLine) {\n case TEXT_DECORATION_LINE.UNDERLINE:\n // Draws a line at the baseline of the font\n // TODO As some browsers display the line as more than 1px if the font-size is big,\n // need to take that into account both in position and size\n this.ctx.fillRect(\n text.bounds.left,\n Math.round(text.bounds.top + baseline),\n text.bounds.width,\n 1\n );\n\n break;\n case TEXT_DECORATION_LINE.OVERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n Math.round(text.bounds.top),\n text.bounds.width,\n 1\n );\n break;\n case TEXT_DECORATION_LINE.LINE_THROUGH:\n // TODO try and find exact position for line-through\n this.ctx.fillRect(\n text.bounds.left,\n Math.ceil(text.bounds.top + middle),\n text.bounds.width,\n 1\n );\n break;\n }\n });\n }\n break;\n case PAINT_ORDER_LAYER.STROKE:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n this.ctx.strokeStyle = '';\n this.ctx.lineWidth = 0;\n this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n }\n\n renderReplacedElement(\n container: ReplacedElementContainer,\n curves: BoundCurves,\n image: HTMLImageElement | HTMLCanvasElement\n ): void {\n if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n const box = contentBox(container);\n const path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n this.ctx.drawImage(\n image,\n 0,\n 0,\n container.intrinsicWidth,\n container.intrinsicHeight,\n box.left,\n box.top,\n box.width,\n box.height\n );\n this.ctx.restore();\n }\n }\n\n async renderNodeContent(paint: ElementPaint): Promise {\n this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n const container = paint.container;\n const curves = paint.curves;\n const styles = container.styles;\n for (const child of container.textNodes) {\n await this.renderTextNode(child, styles);\n }\n\n if (container instanceof ImageElementContainer) {\n try {\n const image = await this.context.cache.match(container.src);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading image ${container.src}`);\n }\n }\n\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n\n if (container instanceof SVGElementContainer) {\n try {\n const image = await this.context.cache.match(container.svg);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n }\n }\n\n if (container instanceof IFrameElementContainer && container.tree) {\n const iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n\n const canvas = await iframeRenderer.render(container.tree);\n if (container.width && container.height) {\n this.ctx.drawImage(\n canvas,\n 0,\n 0,\n container.width,\n container.height,\n container.bounds.left,\n container.bounds.top,\n container.bounds.width,\n container.bounds.height\n );\n }\n }\n\n if (container instanceof InputElementContainer) {\n const size = Math.min(container.bounds.width, container.bounds.height);\n\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n } else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(\n container.bounds.left + size / 2,\n container.bounds.top + size / 2,\n size / 4,\n 0,\n Math.PI * 2,\n true\n );\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n\n if (isTextInputElement(container) && container.value.length) {\n const [fontFamily, fontSize] = this.createFontStyle(styles);\n const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n const bounds = contentBox(container);\n\n let x = 0;\n\n switch (container.styles.textAlign) {\n case TEXT_ALIGN.CENTER:\n x += bounds.width / 2;\n break;\n case TEXT_ALIGN.RIGHT:\n x += bounds.width;\n break;\n }\n\n const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n\n this.ctx.clip();\n this.renderTextWithLetterSpacing(\n new TextBounds(container.value, textBounds),\n styles.letterSpacing,\n baseline\n );\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n\n if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n if (container.styles.listStyleImage !== null) {\n const img = container.styles.listStyleImage;\n if (img.type === CSSImageType.URL) {\n let image;\n const url = (img as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n } catch (e) {\n this.context.logger.error(`Error loading list-style-image ${url}`);\n }\n }\n } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n const [fontFamily] = this.createFontStyle(styles);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n const bounds = new Bounds(\n container.bounds.left,\n container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n container.bounds.width,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n );\n\n this.renderTextWithLetterSpacing(\n new TextBounds(paint.listValue, bounds),\n styles.letterSpacing,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n );\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n }\n }\n\n async renderStackContent(stack: StackingContext): Promise {\n if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n await this.renderNodeBackgroundAndBorders(stack.element);\n // 2. the child stacking contexts with negative stack levels (most negative first).\n for (const child of stack.negativeZIndex) {\n await this.renderStack(child);\n }\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n await this.renderNodeContent(stack.element);\n\n for (const child of stack.nonInlineLevel) {\n await this.renderNode(child);\n }\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context,\n // not this new one.\n for (const child of stack.nonPositionedFloats) {\n await this.renderStack(child);\n }\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n for (const child of stack.nonPositionedInlineLevel) {\n await this.renderStack(child);\n }\n for (const child of stack.inlineLevel) {\n await this.renderNode(child);\n }\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\n // but any positioned descendants and descendants which actually create a new stacking context should be\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n // treat the stacking context generated atomically.\n //\n // All opacity descendants with opacity less than 1\n //\n // All transform descendants with transform other than none\n for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n await this.renderStack(child);\n }\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n // order (smallest first) then tree order.\n for (const child of stack.positiveZIndex) {\n await this.renderStack(child);\n }\n }\n\n mask(paths: Path[]): void {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n }\n\n path(paths: Path[]): void {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n }\n\n formatPath(paths: Path[]): void {\n paths.forEach((point, index) => {\n const start: Vector = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n this.ctx.moveTo(start.x, start.y);\n } else {\n this.ctx.lineTo(start.x, start.y);\n }\n\n if (isBezierCurve(point)) {\n this.ctx.bezierCurveTo(\n point.startControl.x,\n point.startControl.y,\n point.endControl.x,\n point.endControl.y,\n point.end.x,\n point.end.y\n );\n }\n });\n }\n\n renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n }\n\n resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n if (image.width === width && image.height === height) {\n return image;\n }\n\n const ownerDocument = this.canvas.ownerDocument ?? document;\n const canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n }\n\n async renderBackgroundImage(container: ElementContainer): Promise {\n let index = container.styles.backgroundImage.length - 1;\n for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n if (backgroundImage.type === CSSImageType.URL) {\n let image;\n const url = (backgroundImage as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n } catch (e) {\n this.context.logger.error(`Error loading background-image ${url}`);\n }\n\n if (image) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n image.width,\n image.height,\n image.width / image.height\n ]);\n const pattern = this.ctx.createPattern(\n this.resizeImage(image, width, height),\n 'repeat'\n ) as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isLinearGradient(backgroundImage)) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isRadialGradient(backgroundImage)) {\n const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]);\n const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n const x = getAbsoluteValue(position[0], width);\n const y = getAbsoluteValue(position[position.length - 1], height);\n\n const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n if (rx > 0 && ry > 0) {\n const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n this.path(path);\n this.ctx.fillStyle = radialGradient;\n if (rx !== ry) {\n // transforms for elliptical radial gradient\n const midX = container.bounds.left + 0.5 * container.bounds.width;\n const midY = container.bounds.top + 0.5 * container.bounds.height;\n const f = ry / rx;\n const invF = 1 / f;\n\n this.ctx.save();\n this.ctx.translate(midX, midY);\n this.ctx.transform(1, 0, 0, f, 0, 0);\n this.ctx.translate(-midX, -midY);\n\n this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n this.ctx.restore();\n } else {\n this.ctx.fill();\n }\n }\n }\n index--;\n }\n }\n\n async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n }\n\n async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise {\n if (width < 3) {\n await this.renderSolidBorder(color, side, curvePoints);\n return;\n }\n\n const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n }\n\n async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise {\n this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n const styles = paint.container.styles;\n const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n const borders = [\n {style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth},\n {style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth},\n {style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth},\n {style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth}\n ];\n\n const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n getBackgroundValueForIndex(styles.backgroundClip, 0),\n paint.curves\n );\n\n if (hasBackground || styles.boxShadow.length) {\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n\n await this.renderBackgroundImage(paint.container);\n\n this.ctx.restore();\n\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach((shadow) => {\n this.ctx.save();\n const borderBoxArea = calculateBorderBoxPath(paint.curves);\n const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n const shadowPaintingArea = transformPath(\n borderBoxArea,\n -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n (shadow.inset ? 1 : -1) * shadow.spread.number,\n shadow.spread.number * (shadow.inset ? -2 : 2),\n shadow.spread.number * (shadow.inset ? -2 : 2)\n );\n\n if (shadow.inset) {\n this.path(borderBoxArea);\n this.ctx.clip();\n this.mask(shadowPaintingArea);\n } else {\n this.mask(borderBoxArea);\n this.ctx.clip();\n this.path(shadowPaintingArea);\n }\n\n this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n this.ctx.shadowOffsetY = shadow.offsetY.number;\n this.ctx.shadowColor = asString(shadow.color);\n this.ctx.shadowBlur = shadow.blur.number;\n this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n this.ctx.fill();\n this.ctx.restore();\n });\n }\n\n let side = 0;\n for (const border of borders) {\n if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n if (border.style === BORDER_STYLE.DASHED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DASHED\n );\n } else if (border.style === BORDER_STYLE.DOTTED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DOTTED\n );\n } else if (border.style === BORDER_STYLE.DOUBLE) {\n await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n } else {\n await this.renderSolidBorder(border.color, side, paint.curves);\n }\n }\n side++;\n }\n }\n\n async renderDashedDottedBorder(\n color: Color,\n width: number,\n side: number,\n curvePoints: BoundCurves,\n style: BORDER_STYLE\n ): Promise {\n this.ctx.save();\n\n const strokePaths = parsePathForBorderStroke(curvePoints, side);\n const boxPaths = parsePathForBorder(curvePoints, side);\n\n if (style === BORDER_STYLE.DASHED) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n\n let startX, startY, endX, endY;\n if (isBezierCurve(boxPaths[0])) {\n startX = (boxPaths[0] as BezierCurve).start.x;\n startY = (boxPaths[0] as BezierCurve).start.y;\n } else {\n startX = (boxPaths[0] as Vector).x;\n startY = (boxPaths[0] as Vector).y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = (boxPaths[1] as BezierCurve).end.x;\n endY = (boxPaths[1] as BezierCurve).end.y;\n } else {\n endX = (boxPaths[1] as Vector).x;\n endY = (boxPaths[1] as Vector).y;\n }\n\n let length;\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n } else {\n length = Math.abs(startY - endY);\n }\n\n this.ctx.beginPath();\n if (style === BORDER_STYLE.DOTTED) {\n this.formatPath(strokePaths);\n } else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n\n let dashLength = width < 3 ? width * 3 : width * 2;\n let spaceLength = width < 3 ? width * 2 : width;\n if (style === BORDER_STYLE.DOTTED) {\n dashLength = width;\n spaceLength = width;\n }\n\n let useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n } else if (length <= dashLength * 2 + spaceLength) {\n const multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n } else {\n const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n\n if (useLineDash) {\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n } else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n } else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n\n // dashed round edge gap\n if (style === BORDER_STYLE.DASHED) {\n if (isBezierCurve(boxPaths[0])) {\n const path1 = boxPaths[3] as BezierCurve;\n const path2 = boxPaths[0] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n const path1 = boxPaths[1] as BezierCurve;\n const path2 = boxPaths[2] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n\n this.ctx.restore();\n }\n\n async render(element: ElementContainer): Promise {\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n\n const stack = parseStackingContexts(element);\n\n await this.renderStack(stack);\n this.applyEffects([]);\n return this.canvas;\n }\n}\n\nconst isTextInputElement = (\n container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n if (container instanceof TextareaElementContainer) {\n return true;\n } else if (container instanceof SelectElementContainer) {\n return true;\n } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n switch (clip) {\n case BACKGROUND_CLIP.BORDER_BOX:\n return calculateBorderBoxPath(curves);\n case BACKGROUND_CLIP.CONTENT_BOX:\n return calculateContentBoxPath(curves);\n case BACKGROUND_CLIP.PADDING_BOX:\n default:\n return calculatePaddingBoxPath(curves);\n }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n switch (textAlign) {\n case TEXT_ALIGN.CENTER:\n return 'center';\n case TEXT_ALIGN.RIGHT:\n return 'right';\n case TEXT_ALIGN.LEFT:\n default:\n return 'left';\n }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n : fontFamilies;\n};\n","import {RenderConfigurations} from './canvas-renderer';\nimport {createForeignObjectSVG} from '../../core/features';\nimport {asString} from '../../css/types/color';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n options: RenderConfigurations;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n this.options = options;\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.context.logger.debug(\n `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n );\n }\n\n async render(element: HTMLElement): Promise {\n const svg = createForeignObjectSVG(\n this.options.width * this.options.scale,\n this.options.height * this.options.scale,\n this.options.scale,\n this.options.scale,\n element\n );\n\n const img = await loadSerializedSVG(svg);\n\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n return this.canvas;\n }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n","export interface LoggerOptions {\n id: string;\n enabled: boolean;\n}\n\nexport class Logger {\n static instances: {[key: string]: Logger} = {};\n\n private readonly id: string;\n private readonly enabled: boolean;\n private readonly start: number;\n\n constructor({id, enabled}: LoggerOptions) {\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n getTime(): number {\n return Date.now() - this.start;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n info(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info(this.id, `${this.getTime()}ms`, ...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n warn(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n}\n","import {Logger} from './logger';\nimport {Cache, ResourceOptions} from './cache-storage';\nimport {Bounds} from '../css/layout/bounds';\n\nexport type ContextOptions = {\n logging: boolean;\n cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n private readonly instanceName = `#${Context.instanceCount++}`;\n readonly logger: Logger;\n readonly cache: Cache;\n\n private static instanceCount = 1;\n\n constructor(options: ContextOptions, public windowBounds: Bounds) {\n this.logger = new Logger({id: this.instanceName, enabled: options.logging});\n this.cache = options.cache ?? new Cache(this, options);\n }\n}\n","import {Bounds, parseBounds, parseDocumentSize} from './css/layout/bounds';\nimport {COLORS, isTransparent, parseColor} from './css/types/color';\nimport {CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions} from './dom/document-cloner';\nimport {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser';\nimport {CacheStorage} from './core/cache-storage';\nimport {CanvasRenderer, RenderConfigurations, RenderOptions} from './render/canvas/canvas-renderer';\nimport {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer';\nimport {Context, ContextOptions} from './core/context';\n\nexport type Options = CloneOptions &\n WindowOptions &\n RenderOptions &\n ContextOptions & {\n backgroundColor: string | null;\n foreignObjectRendering: boolean;\n removeContainer?: boolean;\n };\n\nconst html2canvas = (element: HTMLElement, options: Partial = {}): Promise => {\n return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial): Promise => {\n if (!element || typeof element !== 'object') {\n return Promise.reject('Invalid element provided as first argument');\n }\n const ownerDocument = element.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error(`Element is not attached to a Document`);\n }\n\n const defaultView = ownerDocument.defaultView;\n\n if (!defaultView) {\n throw new Error(`Document is not attached to a Window`);\n }\n\n const resourceOptions = {\n allowTaint: opts.allowTaint ?? false,\n imageTimeout: opts.imageTimeout ?? 15000,\n proxy: opts.proxy,\n useCORS: opts.useCORS ?? false\n };\n\n const contextOptions = {\n logging: opts.logging ?? true,\n cache: opts.cache,\n ...resourceOptions\n };\n\n const windowOptions = {\n windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n scrollX: opts.scrollX ?? defaultView.pageXOffset,\n scrollY: opts.scrollY ?? defaultView.pageYOffset\n };\n\n const windowBounds = new Bounds(\n windowOptions.scrollX,\n windowOptions.scrollY,\n windowOptions.windowWidth,\n windowOptions.windowHeight\n );\n\n const context = new Context(contextOptions, windowBounds);\n\n const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n const cloneOptions: CloneConfigurations = {\n allowTaint: opts.allowTaint ?? false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n\n context.logger.debug(\n `Starting document clone with size ${windowBounds.width}x${\n windowBounds.height\n } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n );\n\n const documentCloner = new DocumentCloner(context, element, cloneOptions);\n const clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return Promise.reject(`Unable to find element in cloned iframe`);\n }\n\n const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n const {width, height, left, top} =\n isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement);\n\n const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n const renderOptions: RenderConfigurations = {\n canvas: opts.canvas,\n backgroundColor,\n scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n x: (opts.x ?? 0) + left,\n y: (opts.y ?? 0) + top,\n width: opts.width ?? Math.ceil(width),\n height: opts.height ?? Math.ceil(height)\n };\n\n let canvas;\n\n if (foreignObjectRendering) {\n context.logger.debug(`Document cloned, using foreign object rendering`);\n const renderer = new ForeignObjectRenderer(context, renderOptions);\n canvas = await renderer.render(clonedElement);\n } else {\n context.logger.debug(\n `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n );\n\n context.logger.debug(`Starting DOM parsing`);\n const root = parseTree(context, clonedElement);\n\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n\n context.logger.debug(\n `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n );\n\n const renderer = new CanvasRenderer(context, renderOptions);\n canvas = await renderer.render(root);\n }\n\n if (opts.removeContainer ?? true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n }\n }\n\n context.logger.debug(`Finished rendering`);\n return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n const ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n : COLORS.TRANSPARENT;\n\n const defaultBackgroundColor =\n typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = new Uint8Array(encodeUtf8(data))\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/*\n * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nvar _ = require('./es6_');\n\n/**\n * Performs an deep extend on the objects, from right to left.\n * @private\n * @param {Object[]} objects - An array of JS objects\n * @param {Function} collision - A function to be called when a merge collision happens.\n * @param {string[]} path - (for internal use) An array of strings which is the current path down the object when this is called recursively.\n * @returns {Object}\n */\nfunction deepExtend(objects, collision, path) {\n if (objects == null)\n return {};\n\n var src, copyIsArray, copy, name, options, clone,\n target = objects[0] || {},\n i = 1,\n length = objects.length;\n\n path = path || [];\n\n // Handle case when target is a string or something (possible in deep copy)\n if ( typeof target !== 'object' ) {\n target = {};\n }\n\n for ( ; i < length; i++) {\n // Only deal with non-null/undefined values\n if ( (options = objects[ i ]) != null ) {\n // Extend the base object\n for (name in options) {\n if (!options.hasOwnProperty(name))\n continue;\n if (name === '__proto__')\n continue;\n\n src = target[name];\n copy = options[name];\n\n // Prevent never-ending loop\n if (target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if ( copy && ( _.isPlainObject(copy) || (copyIsArray = _.isArray(copy)) ) ) {\n if ( copyIsArray ) {\n copyIsArray = false;\n clone = src && _.isArray(src) ? src : [];\n } else {\n clone = src && _.isPlainObject(src) ? src : {};\n }\n\n var nextPath = path.slice(0);\n nextPath.push(name);\n\n // Never move original objects, clone them\n target[ name ] = deepExtend( [clone, copy], collision, nextPath );\n\n // Don't bring in undefined values\n } else if ( copy !== undefined ) {\n if (src != null && typeof collision == 'function') {\n collision({target: target, copy: options, path: path, key: name});\n }\n target[ name ] = copy;\n }\n }\n }\n }\n\n return target;\n}\n\nmodule.exports = deepExtend;\n","/*\n * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nconst ChangeCase = require('change-case')\n\nconst reduce = function(obj, f, accumulator_init) {\n return Object.keys(obj || {}).reduce((accumulator, key) => {\n let value = obj[key]\n return f(accumulator, value, key, obj)\n }, accumulator_init)\n}\n\nconst forEach = function(obj, f) {\n Object.keys(obj || {}).forEach((key) => {\n let value = obj[key]\n f(value, key)\n });\n}\n\n// Note: This is a crappy version to a certain extent... don't use with Strings, for example...\nconst clone = function(object) {\n return Object.assign(new object.constructor(), object)\n}\n\nconst cloneDeep = function(obj) {\n if(obj === null || obj === undefined || typeof obj !== 'object') {\n return obj\n }\n\n if(obj instanceof Array) {\n return obj.reduce((arr, item, i) => {\n arr[i] = cloneDeep(item)\n return arr\n }, [])\n }\n\n if(obj instanceof Object) {\n return Object.keys(obj || {}).reduce((cpObj, key) => {\n cpObj[key] = cloneDeep(obj[key])\n return cpObj\n }, {})\n }\n}\n\nconst isObject = function(value) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\nconst isString = function(obj) {\n return typeof obj === 'string' || obj instanceof String\n}\n\nconst isArray = function(obj) {\n return Array.isArray(obj)\n}\n\nconst isEmpty = function(obj) {\n return [Object, Array].includes((obj || {}).constructor) && !Object.entries((obj || {})).length\n}\n\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null || Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n if (Object.getPrototypeOf(value) === null) {\n return true\n }\n let proto = value\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto)\n }\n return Object.getPrototypeOf(value) === proto\n}\n\nconst filter = function (arr, filter) {\n if (typeof(filter) !== 'function') {\n throw(\"filter is not a function\")\n }\n if (typeof arr === 'undefined') {\n return []\n }\n return arr.filter(filter)\n}\n\nconst assign = function () {\n let args = Array.prototype.slice.call(arguments)\n args.unshift({})\n return Object.assign(...args)\n}\n\n/* global Set */\nconst pull = function (arr, ...removeList){\n var removeSet = new Set(removeList)\n for (let i=arr.length-1;i>=0;i--) {\n if (removeSet.has(arr[i])) {\n arr.splice(i, 1)\n }\n }\n}\n\nconst unique = function (arr){\n return [...new Set(arr)]\n}\n\nconst upperFirst = function (str) {\n return str ? str[0].toUpperCase() + str.substr(1) : ''\n}\n\nconst matchFn = function(inputObj, testObj) {\n if (isObject(testObj)) {\n return Object.keys(testObj).every((key) => matchFn(inputObj[key], testObj[key]))\n }\n else {\n return inputObj == testObj\n }\n}\n\nconst matches = function (matchObj) {\n let cloneObj = cloneDeep(matchObj)\n let matchesFn = (inputObj) => matchFn(inputObj, cloneObj)\n return matchesFn\n}\n\nconst DEFAULT_OPTIONS = {\n transform: ChangeCase.camelCaseTransformMerge\n}\nconst changeDefaultCaseTransform = function (caseFunction, default_options) {\n return (caseToChange, options) => caseFunction(caseToChange, Object.assign({}, DEFAULT_OPTIONS, default_options, options))\n}\n\nmodule.exports = {\n each: forEach,\n forEach: forEach,\n forIn: forEach,\n keys: Object.keys,\n clone: clone,\n cloneDeep: cloneDeep,\n extend: Object.assign,\n isString: isString,\n isArray: isArray,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isEmpty: isEmpty,\n filter: filter,\n reduce: reduce,\n assign: assign,\n upperFirst: upperFirst,\n camelCase: changeDefaultCaseTransform(ChangeCase.camelCase),\n snakeCase: ChangeCase.snakeCase,\n kebabCase: ChangeCase.paramCase,\n pull: pull,\n matches: matches,\n unique: unique,\n}\n","/*\n * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nvar _ = require('./es6_');\n\n/**\n * Takes an plain javascript object and will make a flat array of all the leaf nodes.\n * A leaf node in this context has a 'value' property. Potentially refactor this to\n * be more generic.\n * @private\n * @param {Object} properties - The plain object you want flattened into an array.\n * @param {Array} [to_ret=[]] - Properties array. This function is recursive therefore this is what gets passed along.\n * @return {Array}\n */\nfunction flattenProperties(properties, to_ret) {\n to_ret = to_ret || [];\n\n for(var name in properties) {\n if (properties.hasOwnProperty(name)) {\n // TODO: this is a bit fragile and arbitrary to stop when we get to a 'value' property.\n if (_.isPlainObject(properties[name]) && ('value' in properties[name])) {\n to_ret.push( properties[name] );\n } else if (_.isPlainObject(properties[name])) {\n flattenProperties(properties[name], to_ret);\n }\n }\n }\n\n return to_ret;\n}\n\n\nmodule.exports = flattenProperties;\n","/*\n * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nconst defaults = require('./defaults');\n\nfunction createReferenceRegex(opts = {}) {\n const options = Object.assign({}, defaults, opts);\n\n return new RegExp(\n '\\\\' +\n options.opening_character +\n '([^' +\n options.closing_character +\n ']+)' +\n '\\\\' +\n options.closing_character, 'g'\n );\n}\n\nmodule.exports = createReferenceRegex;\n","/*\n * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nconst defaults = {\n opening_character: '{',\n closing_character: '}',\n separator: '.'\n};\n\nmodule.exports = defaults;\n","/*\n * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nconst createRegex = require('./createReferenceRegex');\n\n/**\n * Checks if the value uses a value reference.\n * @memberof Dictionary\n * @param {string} value\n * @param {Object|RegExp} regexOrOptions\n * @returns {boolean} - True, if the value uses a value reference\n */\nfunction usesReference(value, regexOrOptions = {}) {\n const regex = regexOrOptions instanceof RegExp ? regexOrOptions : createRegex(regexOrOptions);\n\n if (typeof value === 'string') {\n return regex.test(value);\n }\n\n if (typeof value === 'object') {\n let hasReference = false;\n // iterate over each property in the object,\n // if any element passes the regex test,\n // the whole thing should be true\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n const element = value[key];\n let reference = usesReference(element, regexOrOptions);\n if (reference) {\n hasReference = true;\n break;\n }\n }\n }\n return hasReference;\n }\n\n return false;\n}\n\nmodule.exports = usesReference;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export default function(url, options) {\n\toptions = options || {};\n\treturn new Promise( (resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\tconst keys = [];\n\t\tconst all = [];\n\t\tconst headers = {};\n\n\t\tconst response = () => ({\n\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\tstatusText: request.statusText,\n\t\t\tstatus: request.status,\n\t\t\turl: request.responseURL,\n\t\t\ttext: () => Promise.resolve(request.responseText),\n\t\t\tjson: () => Promise.resolve(request.responseText).then(JSON.parse),\n\t\t\tblob: () => Promise.resolve(new Blob([request.response])),\n\t\t\tclone: response,\n\t\t\theaders: {\n\t\t\t\tkeys: () => keys,\n\t\t\t\tentries: () => all,\n\t\t\t\tget: n => headers[n.toLowerCase()],\n\t\t\t\thas: n => n.toLowerCase() in headers\n\t\t\t}\n\t\t});\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\trequest.onload = () => {\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theaders[key] = headers[key] ? `${headers[key]},${value}` : value;\n\t\t\t});\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\tfor (const i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.send(options.body || null);\n\t});\n}\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nexports.__assign = function() {\r\n exports.__assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return exports.__assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexports.__read = __read;\nexports.__rest = __rest;\nexports.__spreadArray = __spreadArray;\nexports.__values = __values;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar _tslib = require('./_virtual/_tslib.js');\n\nvar defaultWaitForOptions = {\n timeout: 10000 // 10 seconds\n\n};\n/**\r\n * Subscribes to an actor ref and waits for its emitted value to satisfy\r\n * a predicate, and then resolves with that value.\r\n * Will throw if the desired state is not reached after a timeout\r\n * (defaults to 10 seconds).\r\n *\r\n * @example\r\n * ```js\r\n * const state = await waitFor(someService, state => {\r\n * return state.hasTag('loaded');\r\n * });\r\n *\r\n * state.hasTag('loaded'); // true\r\n * ```\r\n *\r\n * @param actorRef The actor ref to subscribe to\r\n * @param predicate Determines if a value matches the condition to wait for\r\n * @param options\r\n * @returns A promise that eventually resolves to the emitted value\r\n * that matches the condition\r\n */\n\nfunction waitFor(actorRef, predicate, options) {\n var resolvedOptions = _tslib.__assign(_tslib.__assign({}, defaultWaitForOptions), options);\n\n return new Promise(function (res, rej) {\n var done = false;\n\n if (process.env.NODE_ENV !== 'production' && resolvedOptions.timeout < 0) {\n console.error('`timeout` passed to `waitFor` is negative and it will reject its internal promise immediately.');\n }\n\n var handle = resolvedOptions.timeout === Infinity ? undefined : setTimeout(function () {\n sub.unsubscribe();\n rej(new Error(\"Timeout of \".concat(resolvedOptions.timeout, \" ms exceeded\")));\n }, resolvedOptions.timeout);\n\n var dispose = function () {\n clearTimeout(handle);\n done = true;\n sub === null || sub === void 0 ? void 0 : sub.unsubscribe();\n };\n\n var sub = actorRef.subscribe({\n next: function (emitted) {\n if (predicate(emitted)) {\n dispose();\n res(emitted);\n }\n },\n error: function (err) {\n dispose();\n rej(err);\n },\n complete: function () {\n dispose();\n rej(new Error(\"Actor terminated without satisfying predicate\"));\n }\n });\n\n if (done) {\n sub.unsubscribe();\n }\n });\n}\n\nexports.waitFor = waitFor;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"598\":\"4be3cd6e\",\"703\":\"667e3098\",\"787\":\"7d482ac1\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"battery-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbattery_app\"] = self[\"webpackChunkbattery_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { warning, invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\nexport type MutationFormMethod = \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type FormMethod = \"get\" | MutationFormMethod;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n detectErrorBoundary: DetectErrorBoundaryFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n hasErrorBoundary: detectErrorBoundary(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n hasErrorBoundary: detectErrorBoundary(route),\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n detectErrorBoundary,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n const starParam = params[star];\n\n // Apply the splat\n return starParam;\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n\n if (optional === \"?\") {\n return param == null ? \"\" : param;\n }\n\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n\n return param;\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n DataResult,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n DetectErrorBoundaryFunction,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n MutationFormMethod,\n ShouldRevalidateFunction,\n RouteManifest,\n ImmutableRouteKey,\n ActionFunction,\n LoaderFunction,\n} from \"./utils\";\nimport {\n DeferredData,\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterNavigateOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n basename?: string;\n routes: AgnosticRouteObject[];\n history: History;\n hydrationData?: HydrationState;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n formMethod?: FormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit\n | Omit;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n\nconst defaultDetectErrorBoundary = (route: AgnosticRouteObject) =>\n Boolean(route.hasErrorBoundary);\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let detectErrorBoundary =\n init.detectErrorBoundary || defaultDetectErrorBoundary;\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(\n dataRoutes,\n init.history.location,\n init.basename\n );\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidate()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations from their actions\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(router.state.blockers) });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (state.initialized) {\n return router;\n }\n\n let lazyMatches = state.matches.filter((m) => m.route.lazy);\n\n if (lazyMatches.length === 0) {\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n startNavigation(HistoryAction.Pop, state.location);\n return router;\n }\n\n // Load lazy modules, then kick off initial data load if needed\n let lazyPromises = lazyMatches.map((m) =>\n loadLazyRouteModule(m.route, detectErrorBoundary, manifest)\n );\n Promise.all(lazyPromises).then(() => {\n let initialized =\n !state.matches.some((m) => m.route.loader) ||\n init.hydrationData != null;\n if (initialized) {\n // We already have required loaderData so we can just set initialized\n updateState({ initialized: true });\n } else {\n // We still need to kick off initial data loads\n startNavigation(HistoryAction.Pop, state.location);\n }\n });\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n for (let [key] of blockerFunctions) {\n deleteBlocker(key);\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers: new Map(state.blockers),\n });\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(to, opts);\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(state.blockers) });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, init.basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a mutation submission\n // For example, on /page#hash and submit a
which will\n // default to a navigation to /page\n if (\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts?: { replace?: boolean }\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n };\n loadingNavigation = navigation;\n }\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission\n ? submission\n : loadingNavigation.formMethod &&\n loadingNavigation.formAction &&\n loadingNavigation.formData &&\n loadingNavigation.formEncType\n ? {\n formMethod: loadingNavigation.formMethod,\n formAction: loadingNavigation.formAction,\n formData: loadingNavigation.formData,\n formEncType: loadingNavigation.formEncType,\n }\n : undefined;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach((rf) =>\n fetchControllers.set(rf.key, pendingNavigationController!)\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n await startRedirectNavigation(state, redirect, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = matchRoutes(routesToUse, href, init.basename);\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: href })\n );\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(href, opts, true);\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n isFetchActionRedirect: true,\n });\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, init.basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n return startRedirectNavigation(state, redirect);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n await startRedirectNavigation(state, result);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n // Check if this an absolute external redirect that goes to a new origin\n if (\n ABSOLUTE_URL_REGEX.test(redirect.location) &&\n isBrowser &&\n typeof window?.location !== \"undefined\"\n ) {\n let url = init.history.createURL(redirect.location);\n let isDifferentBasename =\n stripBasename(url.pathname, init.basename || \"/\") == null;\n\n if (window.location.origin !== url.origin || isDifferentBasename) {\n if (replace) {\n window.location.replace(redirect.location);\n } else {\n window.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType, formData } = state.navigation;\n if (!submission && formMethod && formAction && formData && formEncType) {\n submission = {\n formMethod,\n formAction,\n formEncType,\n formData,\n };\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n submission &&\n isMutationMethod(submission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...submission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // Otherwise, we kick off a new loading navigation, preserving the\n // submission info for the duration of this navigation\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: submission ? submission.formMethod : undefined,\n formAction: submission ? submission.formAction : undefined,\n formEncType: submission ? submission.formEncType : undefined,\n formData: submission ? submission.formData : undefined,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, request.signal),\n f.match,\n f.matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n request.signal,\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n markFetchersDone(doneKeys);\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n state.blockers.set(key, newBlocker);\n updateState({ blockers: new Map(state.blockers) });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || ((location) => location.key);\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n inFlightDataRoutes = newRoutes;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let detectErrorBoundary =\n opts?.detectErrorBoundary || defaultDetectErrorBoundary;\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let basename = (opts ? opts.basename : null) || \"/\";\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method.toLowerCase();\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"head\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method.toLowerCase();\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"head\" && method !== \"options\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return opts != null && \"formData\" in opts;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n to: To,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\n\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n // Create a Submission on non-GET navigations\n let submission: Submission | undefined;\n if (opts.formData) {\n submission = {\n formMethod: opts.formMethod || \"get\",\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n let defaultShouldRevalidate =\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search;\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n defaultShouldRevalidate ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData\n if (!fetcherMatches) {\n revalidatingFetchers.push({ key, ...f, matches: null, match: null });\n return;\n }\n\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n if (cancelledFetcherLoads.includes(key)) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // hit a static href, so they _always_ check shouldRevalidate and the\n // default is strictly if a revalidation is explicitly required (action\n // submissions, useRevalidator, X-Remix-Revalidate).\n let shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate,\n });\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n detectErrorBoundary: DetectErrorBoundaryFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to detectErrorBoundary\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `detectErrorBoundary` function to set the `hasErrorBoundary` route\n // property since the logic will differ between frameworks.\n hasErrorBoundary: detectErrorBoundary({ ...routeToUpdate }),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n detectErrorBoundary: DetectErrorBoundaryFunction,\n basename = \"/\",\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false,\n requestContext?: unknown\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({ request, params: match.params, context: requestContext }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let values = await Promise.all([\n runHandler(handler),\n loadLazyRouteModule(match.route, detectErrorBoundary, manifest),\n ]);\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, detectErrorBoundary, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n throw getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else {\n invariant(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let resolvedLocation = resolveTo(\n location,\n routePathnames,\n new URL(request.url).pathname\n );\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${location}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n } else if (!isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (result instanceof DeferredData) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType, formData } = submission;\n init.method = formMethod.toUpperCase();\n init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, value instanceof File ? value.name : value);\n }\n\n return searchParams;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod {\n return validRequestMethods.has(method as FormMethod);\n}\n\nfunction isMutationMethod(method?: string): method is MutationFormMethod {\n return validMutationMethods.has(method as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signal: AbortSignal,\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n//#endregion\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own \n ErrorBoundary prop on \n <Route>\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n if (match.route.ErrorBoundary) {\n errorElement = ;\n } else if (match.route.errorElement) {\n errorElement = match.route.errorElement;\n } else {\n errorElement = ;\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode = outlet;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey] = React.useState(() => String(++blockerId));\n\n let blockerFunction = React.useCallback(\n (args) => {\n return typeof shouldBlock === \"function\"\n ? !!shouldBlock(args)\n : !!shouldBlock;\n },\n [shouldBlock]\n );\n\n let blocker = router.getBlocker(blockerKey, blockerFunction);\n\n // Cleanup on unmount\n React.useEffect(\n () => () => router.deleteBlocker(blockerKey),\n [router, blockerKey]\n );\n\n // Prefer the blocker from state since DataRouterContext is memoized so this\n // ensures we update on blocker state updates\n return state.blockers.get(blockerKey) || blocker;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n UNSAFE_invariant as invariant,\n parsePath,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n let getState = React.useCallback(() => router.state, [router]);\n\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n getState,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n getState\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a \";\r\n var nW = globalObject.open();\r\n\r\n if (nW !== null) {\r\n nW.document.write(htmlForNewWindow);\r\n }\r\n return nW;\r\n } else {\r\n throw new Error(\r\n \"The option pdfobjectnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n case \"pdfjsnewwindow\":\r\n if (\r\n Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n ) {\r\n var pdfJsUrl = options.pdfJsUrl || \"examples/PDF.js/web/viewer.html\";\r\n var htmlForPDFjsNewWindow =\r\n \"\" +\r\n \"\" +\r\n '' +\r\n \"\";\r\n var dataURLNewWindow = globalObject.open();\r\n if (dataURLNewWindow !== null) {\r\n dataURLNewWindow.document.write(htmlForDataURLNewWindow);\r\n dataURLNewWindow.document.title = options.filename;\r\n }\r\n if (dataURLNewWindow || typeof safari === \"undefined\")\r\n return dataURLNewWindow;\r\n } else {\r\n throw new Error(\r\n \"The option dataurlnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n break;\r\n case \"datauri\":\r\n case \"dataurl\":\r\n return (globalObject.document.location.href = this.output(\r\n \"datauristring\",\r\n options\r\n ));\r\n default:\r\n return null;\r\n }\r\n }));\r\n\r\n /**\r\n * Used to see if a supplied hotfix was requested when the pdf instance was created.\r\n * @param {string} hotfixName - The name of the hotfix to check.\r\n * @returns {boolean}\r\n */\r\n var hasHotfix = function(hotfixName) {\r\n return (\r\n Array.isArray(hotfixes) === true && hotfixes.indexOf(hotfixName) > -1\r\n );\r\n };\r\n\r\n switch (unit) {\r\n case \"pt\":\r\n scaleFactor = 1;\r\n break;\r\n case \"mm\":\r\n scaleFactor = 72 / 25.4;\r\n break;\r\n case \"cm\":\r\n scaleFactor = 72 / 2.54;\r\n break;\r\n case \"in\":\r\n scaleFactor = 72;\r\n break;\r\n case \"px\":\r\n if (hasHotfix(\"px_scaling\") == true) {\r\n scaleFactor = 72 / 96;\r\n } else {\r\n scaleFactor = 96 / 72;\r\n }\r\n break;\r\n case \"pc\":\r\n scaleFactor = 12;\r\n break;\r\n case \"em\":\r\n scaleFactor = 12;\r\n break;\r\n case \"ex\":\r\n scaleFactor = 6;\r\n break;\r\n default:\r\n if (typeof unit === \"number\") {\r\n scaleFactor = unit;\r\n } else {\r\n throw new Error(\"Invalid unit: \" + unit);\r\n }\r\n }\r\n\r\n var encryption = null;\r\n setCreationDate();\r\n setFileId();\r\n\r\n var getEncryptor = function(objectId) {\r\n if (encryptionOptions !== null) {\r\n return encryption.encryptor(objectId, 0);\r\n }\r\n return function(data) {\r\n return data;\r\n };\r\n };\r\n\r\n //---------------------------------------\r\n // Public API\r\n\r\n var getPageInfo = (API.__private__.getPageInfo = API.getPageInfo = function(\r\n pageNumberOneBased\r\n ) {\r\n if (isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");\r\n }\r\n var objId = pagesContext[pageNumberOneBased].objId;\r\n return {\r\n objId: objId,\r\n pageNumber: pageNumberOneBased,\r\n pageContext: pagesContext[pageNumberOneBased]\r\n };\r\n });\r\n\r\n var getPageInfoByObjId = (API.__private__.getPageInfoByObjId = function(\r\n objId\r\n ) {\r\n if (isNaN(objId) || objId % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");\r\n }\r\n for (var pageNumber in pagesContext) {\r\n if (pagesContext[pageNumber].objId === objId) {\r\n break;\r\n }\r\n }\r\n return getPageInfo(pageNumber);\r\n });\r\n\r\n var getCurrentPageInfo = (API.__private__.getCurrentPageInfo = API.getCurrentPageInfo = function() {\r\n return {\r\n objId: pagesContext[currentPage].objId,\r\n pageNumber: currentPage,\r\n pageContext: pagesContext[currentPage]\r\n };\r\n });\r\n\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @param format {String/Array} The format of the new page. Can be:
  • a0 - a10
  • b0 - b10
  • c0 - c10
  • dl
  • letter
  • government-letter
  • legal
  • junior-legal
  • ledger
  • tabloid
  • credit-card

\r\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n * @param orientation {string} Orientation of the new page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" (Default), \"l\").\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addPage\r\n */\r\n API.addPage = function() {\r\n _addPage.apply(this, arguments);\r\n return this;\r\n };\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name setPage\r\n * @param {number} page Switch the active page to the page number specified (indexed starting at 1).\r\n * @example\r\n * doc = jsPDF()\r\n * doc.addPage()\r\n * doc.addPage()\r\n * doc.text('I am on page 3', 10, 10)\r\n * doc.setPage(1)\r\n * doc.text('I am on page 1', 10, 10)\r\n */\r\n API.setPage = function() {\r\n _setPage.apply(this, arguments);\r\n setOutputDestination.call(this, pages[currentPage]);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name insertPage\r\n * @memberof jsPDF#\r\n *\r\n * @function\r\n * @instance\r\n * @param {Object} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.insertPage = function(beforePage) {\r\n this.addPage();\r\n this.movePage(currentPage, beforePage);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name movePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {number} targetPage\r\n * @param {number} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.movePage = function(targetPage, beforePage) {\r\n var tmpPages, tmpPagesContext;\r\n if (targetPage > beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var i = targetPage; i > beforePage; i--) {\r\n pages[i] = pages[i - 1];\r\n pagesContext[i] = pagesContext[i - 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n } else if (targetPage < beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var j = targetPage; j < beforePage; j++) {\r\n pages[j] = pages[j + 1];\r\n pagesContext[j] = pagesContext[j + 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Deletes a page from the PDF.\r\n * @name deletePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @param {number} targetPage\r\n * @instance\r\n * @returns {jsPDF}\r\n */\r\n API.deletePage = function() {\r\n _deletePage.apply(this, arguments);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds text to page. Supports adding multiline text when 'text' argument is an Array of Strings.\r\n *\r\n * @function\r\n * @instance\r\n * @param {String|Array} text String or array of strings to be added to the page. Each line is shifted one line down per font, spacing settings declared before this call.\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page.\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page.\r\n * @param {Object} [options] - Collection of settings signaling how the text must be encoded.\r\n * @param {string} [options.align=left] - The alignment of the text, possible values: left, center, right, justify.\r\n * @param {string} [options.baseline=alphabetic] - Sets text baseline used when drawing the text, possible values: alphabetic, ideographic, bottom, top, middle, hanging\r\n * @param {number|Matrix} [options.angle=0] - Rotate the text clockwise or counterclockwise. Expects the angle in degree.\r\n * @param {number} [options.rotationDirection=1] - Direction of the rotation. 0 = clockwise, 1 = counterclockwise.\r\n * @param {number} [options.charSpace=0] - The space between each letter.\r\n * @param {number} [options.horizontalScale=1] - Horizontal scale of the text as a factor of the regular size.\r\n * @param {number} [options.lineHeightFactor=1.15] - The lineheight of each line.\r\n * @param {Object} [options.flags] - Flags for to8bitStream.\r\n * @param {boolean} [options.flags.noBOM=true] - Don't add BOM to Unicode-text.\r\n * @param {boolean} [options.flags.autoencode=true] - Autoencode the Text.\r\n * @param {number} [options.maxWidth=0] - Split the text by given width, 0 = no split.\r\n * @param {string} [options.renderingMode=fill] - Set how the text should be rendered, possible values: fill, stroke, fillThenStroke, invisible, fillAndAddForClipping, strokeAndAddPathForClipping, fillThenStrokeAndAddToPathForClipping, addToPathForClipping.\r\n * @param {boolean} [options.isInputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isInputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isSymmetricSwapping] - Option for the BidiEngine\r\n * @param {number|Matrix} transform If transform is a number the text will be rotated by this value around the anchor set by x and y.\r\n *\r\n * If it is a Matrix, this matrix gets directly applied to the text, which allows shearing\r\n * effects etc.; the x and y offsets are then applied AFTER the coordinate system has been established by this\r\n * matrix. This means passing a rotation matrix that is equivalent to some rotation angle will in general yield a\r\n * DIFFERENT result. A matrix is only allowed in \"advanced\" API mode.\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name text\r\n */\r\n API.__private__.text = API.text = function(text, x, y, options, transform) {\r\n /*\r\n * Inserts something like this into PDF\r\n * BT\r\n * /F1 16 Tf % Font name + size\r\n * 16 TL % How many units down for next line in multiline text\r\n * 0 g % color\r\n * 28.35 813.54 Td % position\r\n * (line one) Tj\r\n * T* (line two) Tj\r\n * T* (line three) Tj\r\n * ET\r\n */\r\n options = options || {};\r\n var scope = options.scope || this;\r\n var payload, da, angle, align, charSpace, maxWidth, flags, horizontalScale;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, text, flags)\r\n // in effort to make all calls have similar signature like\r\n // function(data, coordinates... , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (\r\n typeof text === \"number\" &&\r\n typeof x === \"number\" &&\r\n (typeof y === \"string\" || Array.isArray(y))\r\n ) {\r\n var tmp = y;\r\n y = x;\r\n x = text;\r\n text = tmp;\r\n }\r\n\r\n var transformationMatrix;\r\n\r\n if (arguments[3] instanceof Matrix === false) {\r\n flags = arguments[3];\r\n angle = arguments[4];\r\n align = arguments[5];\r\n\r\n if (typeof flags !== \"object\" || flags === null) {\r\n if (typeof angle === \"string\") {\r\n align = angle;\r\n angle = null;\r\n }\r\n if (typeof flags === \"string\") {\r\n align = flags;\r\n flags = null;\r\n }\r\n if (typeof flags === \"number\") {\r\n angle = flags;\r\n flags = null;\r\n }\r\n options = {\r\n flags: flags,\r\n angle: angle,\r\n align: align\r\n };\r\n }\r\n } else {\r\n advancedApiModeTrap(\r\n \"The transform parameter of text() with a Matrix value\"\r\n );\r\n transformationMatrix = transform;\r\n }\r\n\r\n if (isNaN(x) || isNaN(y) || typeof text === \"undefined\" || text === null) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.text\");\r\n }\r\n\r\n if (text.length === 0) {\r\n return scope;\r\n }\r\n\r\n var xtra = \"\";\r\n var isHex = false;\r\n var lineHeight =\r\n typeof options.lineHeightFactor === \"number\"\r\n ? options.lineHeightFactor\r\n : lineHeightFactor;\r\n var scaleFactor = scope.internal.scaleFactor;\r\n\r\n function ESC(s) {\r\n s = s.split(\"\\t\").join(Array(options.TabLen || 9).join(\" \"));\r\n return pdfEscape(s, flags);\r\n }\r\n\r\n function transformTextToSpecialArray(text) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(curDa);\r\n } else {\r\n if (\r\n Array.isArray(text) &&\r\n (curDa.length === 1 ||\r\n (curDa[1] === undefined && curDa[2] === undefined))\r\n ) {\r\n da.push(curDa[0]);\r\n } else {\r\n da.push([curDa[0], curDa[1], curDa[2]]);\r\n }\r\n }\r\n }\r\n return da;\r\n }\r\n\r\n function processTextByFunction(text, processingFunction) {\r\n var result;\r\n if (typeof text === \"string\") {\r\n result = processingFunction(text)[0];\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n var tmpResult;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(processingFunction(curDa)[0]);\r\n } else if (Array.isArray(curDa) && typeof curDa[0] === \"string\") {\r\n tmpResult = processingFunction(curDa[0], curDa[1], curDa[2]);\r\n da.push([tmpResult[0], tmpResult[1], tmpResult[2]]);\r\n }\r\n }\r\n result = da;\r\n }\r\n return result;\r\n }\r\n\r\n //Check if text is of type String\r\n var textIsOfTypeString = false;\r\n var tmpTextIsOfTypeString = true;\r\n\r\n if (typeof text === \"string\") {\r\n textIsOfTypeString = true;\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (\r\n typeof curDa !== \"string\" ||\r\n (Array.isArray(curDa) && typeof curDa[0] !== \"string\")\r\n ) {\r\n tmpTextIsOfTypeString = false;\r\n }\r\n }\r\n textIsOfTypeString = tmpTextIsOfTypeString;\r\n }\r\n if (textIsOfTypeString === false) {\r\n throw new Error(\r\n 'Type of text must be string or Array. \"' +\r\n text +\r\n '\" is not recognized.'\r\n );\r\n }\r\n\r\n //If there are any newlines in text, we assume\r\n //the user wanted to print multiple lines, so break the\r\n //text up into an array. If the text is already an array,\r\n //we assume the user knows what they are doing.\r\n //Convert text into an array anyway to simplify\r\n //later code.\r\n\r\n if (typeof text === \"string\") {\r\n if (text.match(/[\\r?\\n]/)) {\r\n text = text.split(/\\r\\n|\\r|\\n/g);\r\n } else {\r\n text = [text];\r\n }\r\n }\r\n\r\n //baseline\r\n var height = activeFontSize / scope.internal.scaleFactor;\r\n var descent = height * (lineHeight - 1);\r\n\r\n switch (options.baseline) {\r\n case \"bottom\":\r\n y -= descent;\r\n break;\r\n case \"top\":\r\n y += height - descent;\r\n break;\r\n case \"hanging\":\r\n y += height - 2 * descent;\r\n break;\r\n case \"middle\":\r\n y += height / 2 - descent;\r\n break;\r\n case \"ideographic\":\r\n case \"alphabetic\":\r\n default:\r\n // do nothing, everything is fine\r\n break;\r\n }\r\n\r\n //multiline\r\n maxWidth = options.maxWidth || 0;\r\n\r\n if (maxWidth > 0) {\r\n if (typeof text === \"string\") {\r\n text = scope.splitTextToSize(text, maxWidth);\r\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n text = text.reduce(function(acc, textLine) {\r\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\r\n }, []);\r\n }\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"preProcessText\", payload);\r\n\r\n text = payload.text;\r\n options = payload.options;\r\n\r\n //angle\r\n angle = options.angle;\r\n\r\n if (\r\n transformationMatrix instanceof Matrix === false &&\r\n angle &&\r\n typeof angle === \"number\"\r\n ) {\r\n angle *= Math.PI / 180;\r\n\r\n if (options.rotationDirection === 0) {\r\n angle = -angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n angle = -angle;\r\n }\r\n\r\n var c = Math.cos(angle);\r\n var s = Math.sin(angle);\r\n transformationMatrix = new Matrix(c, s, -s, c, 0, 0);\r\n } else if (angle && angle instanceof Matrix) {\r\n transformationMatrix = angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED && !transformationMatrix) {\r\n transformationMatrix = identityMatrix;\r\n }\r\n\r\n //charSpace\r\n\r\n charSpace = options.charSpace || activeCharSpace;\r\n\r\n if (typeof charSpace !== \"undefined\") {\r\n xtra += hpf(scale(charSpace)) + \" Tc\\n\";\r\n this.setCharSpace(this.getCharSpace() || 0);\r\n }\r\n\r\n horizontalScale = options.horizontalScale;\r\n if (typeof horizontalScale !== \"undefined\") {\r\n xtra += hpf(horizontalScale * 100) + \" Tz\\n\";\r\n }\r\n\r\n //lang\r\n\r\n var lang = options.lang;\r\n\r\n if (lang) {\r\n // xtra += \"/Lang (\" + lang +\")\\n\";\r\n }\r\n\r\n //renderingMode\r\n var renderingMode = -1;\r\n var parmRenderingMode =\r\n typeof options.renderingMode !== \"undefined\"\r\n ? options.renderingMode\r\n : options.stroke;\r\n var pageContext = scope.internal.getCurrentPageInfo().pageContext;\r\n\r\n switch (parmRenderingMode) {\r\n case 0:\r\n case false:\r\n case \"fill\":\r\n renderingMode = 0;\r\n break;\r\n case 1:\r\n case true:\r\n case \"stroke\":\r\n renderingMode = 1;\r\n break;\r\n case 2:\r\n case \"fillThenStroke\":\r\n renderingMode = 2;\r\n break;\r\n case 3:\r\n case \"invisible\":\r\n renderingMode = 3;\r\n break;\r\n case 4:\r\n case \"fillAndAddForClipping\":\r\n renderingMode = 4;\r\n break;\r\n case 5:\r\n case \"strokeAndAddPathForClipping\":\r\n renderingMode = 5;\r\n break;\r\n case 6:\r\n case \"fillThenStrokeAndAddToPathForClipping\":\r\n renderingMode = 6;\r\n break;\r\n case 7:\r\n case \"addToPathForClipping\":\r\n renderingMode = 7;\r\n break;\r\n }\r\n\r\n var usedRenderingMode =\r\n typeof pageContext.usedRenderingMode !== \"undefined\"\r\n ? pageContext.usedRenderingMode\r\n : -1;\r\n\r\n //if the coder wrote it explicitly to use a specific\r\n //renderingMode, then use it\r\n if (renderingMode !== -1) {\r\n xtra += renderingMode + \" Tr\\n\";\r\n //otherwise check if we used the rendering Mode already\r\n //if so then set the rendering Mode...\r\n } else if (usedRenderingMode !== -1) {\r\n xtra += \"0 Tr\\n\";\r\n }\r\n\r\n if (renderingMode !== -1) {\r\n pageContext.usedRenderingMode = renderingMode;\r\n }\r\n\r\n //align\r\n align = options.align || \"left\";\r\n var leading = activeFontSize * lineHeight;\r\n var pageWidth = scope.internal.pageSize.getWidth();\r\n var activeFont = fonts[activeFontKey];\r\n charSpace = options.charSpace || activeCharSpace;\r\n maxWidth = options.maxWidth || 0;\r\n\r\n var lineWidths;\r\n flags = Object.assign({ autoencode: true, noBOM: true }, options.flags);\r\n\r\n var wordSpacingPerLine = [];\r\n\r\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n da = transformTextToSpecialArray(text);\r\n var newY;\r\n if (align !== \"left\") {\r\n lineWidths = da.map(function(v) {\r\n return (\r\n (scope.getStringUnitWidth(v, {\r\n font: activeFont,\r\n charSpace: charSpace,\r\n fontSize: activeFontSize,\r\n doKerning: false\r\n }) *\r\n activeFontSize) /\r\n scaleFactor\r\n );\r\n });\r\n }\r\n //The first line uses the \"main\" Td setting,\r\n //and the subsequent lines are offset by the\r\n //previous line's x coordinate.\r\n var prevWidth = 0;\r\n var newX;\r\n if (align === \"right\") {\r\n //The passed in x coordinate defines the\r\n //rightmost point of the text.\r\n x -= lineWidths[0];\r\n text = [];\r\n len = da.length;\r\n for (var i = 0; i < len; i++) {\r\n if (i === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale(prevWidth - lineWidths[i]);\r\n newY = -leading;\r\n }\r\n text.push([da[i], newX, newY]);\r\n prevWidth = lineWidths[i];\r\n }\r\n } else if (align === \"center\") {\r\n //The passed in x coordinate defines\r\n //the center point.\r\n x -= lineWidths[0] / 2;\r\n text = [];\r\n len = da.length;\r\n for (var j = 0; j < len; j++) {\r\n if (j === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale((prevWidth - lineWidths[j]) / 2);\r\n newY = -leading;\r\n }\r\n text.push([da[j], newX, newY]);\r\n prevWidth = lineWidths[j];\r\n }\r\n } else if (align === \"left\") {\r\n text = [];\r\n len = da.length;\r\n for (var h = 0; h < len; h++) {\r\n text.push(da[h]);\r\n }\r\n } else if (align === \"justify\") {\r\n text = [];\r\n len = da.length;\r\n maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n\r\n for (var l = 0; l < len; l++) {\r\n newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n newX = l === 0 ? getHorizontalCoordinate(x) : 0;\r\n if (l < len - 1) {\r\n wordSpacingPerLine.push(\r\n hpf(\r\n scale(\r\n (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n )\r\n )\r\n );\r\n } else {\r\n wordSpacingPerLine.push(0);\r\n }\r\n text.push([da[l], newX, newY]);\r\n }\r\n } else {\r\n throw new Error(\r\n 'Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".'\r\n );\r\n }\r\n }\r\n\r\n //R2L\r\n var doReversing = typeof options.R2L === \"boolean\" ? options.R2L : R2L;\r\n if (doReversing === true) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [\r\n text\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\"),\r\n posX,\r\n posY\r\n ];\r\n });\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"postProcessText\", payload);\r\n\r\n text = payload.text;\r\n isHex = payload.mutex.isHex || false;\r\n\r\n //Escaping\r\n var activeFontEncoding = fonts[activeFontKey].encoding;\r\n\r\n if (\r\n activeFontEncoding === \"WinAnsiEncoding\" ||\r\n activeFontEncoding === \"StandardEncoding\"\r\n ) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [ESC(text), posX, posY];\r\n });\r\n }\r\n\r\n da = transformTextToSpecialArray(text);\r\n\r\n text = [];\r\n var STRING = 0;\r\n var ARRAY = 1;\r\n var variant = Array.isArray(da[0]) ? ARRAY : STRING;\r\n var posX;\r\n var posY;\r\n var content;\r\n var wordSpacing = \"\";\r\n\r\n var generatePosition = function(\r\n parmPosX,\r\n parmPosY,\r\n parmTransformationMatrix\r\n ) {\r\n var position = \"\";\r\n if (parmTransformationMatrix instanceof Matrix) {\r\n // It is kind of more intuitive to apply a plain rotation around the text anchor set by x and y\r\n // but when the user supplies an arbitrary transformation matrix, the x and y offsets should be applied\r\n // in the coordinate system established by this matrix\r\n if (typeof options.angle === \"number\") {\r\n parmTransformationMatrix = matrixMult(\r\n parmTransformationMatrix,\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY)\r\n );\r\n } else {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, -1, 0, 0),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n position = parmTransformationMatrix.join(\" \") + \" Tm\\n\";\r\n } else {\r\n position = hpf(parmPosX) + \" \" + hpf(parmPosY) + \" Td\\n\";\r\n }\r\n return position;\r\n };\r\n\r\n for (var lineIndex = 0; lineIndex < da.length; lineIndex++) {\r\n wordSpacing = \"\";\r\n\r\n switch (variant) {\r\n case ARRAY:\r\n content =\r\n (isHex ? \"<\" : \"(\") + da[lineIndex][0] + (isHex ? \">\" : \")\");\r\n posX = parseFloat(da[lineIndex][1]);\r\n posY = parseFloat(da[lineIndex][2]);\r\n break;\r\n case STRING:\r\n content = (isHex ? \"<\" : \"(\") + da[lineIndex] + (isHex ? \">\" : \")\");\r\n posX = getHorizontalCoordinate(x);\r\n posY = getVerticalCoordinate(y);\r\n break;\r\n }\r\n\r\n if (\r\n typeof wordSpacingPerLine !== \"undefined\" &&\r\n typeof wordSpacingPerLine[lineIndex] !== \"undefined\"\r\n ) {\r\n wordSpacing = wordSpacingPerLine[lineIndex] + \" Tw\\n\";\r\n }\r\n\r\n if (lineIndex === 0) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n } else if (variant === STRING) {\r\n text.push(wordSpacing + content);\r\n } else if (variant === ARRAY) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n }\r\n }\r\n\r\n text = variant === STRING ? text.join(\" Tj\\nT* \") : text.join(\" Tj\\n\");\r\n text += \" Tj\\n\";\r\n\r\n var result = \"BT\\n/\";\r\n result += activeFontKey + \" \" + activeFontSize + \" Tf\\n\"; // font face, style, size\r\n result += hpf(activeFontSize * lineHeight) + \" TL\\n\"; // line spacing\r\n result += textColor + \"\\n\";\r\n result += xtra;\r\n result += text;\r\n result += \"ET\";\r\n\r\n out(result);\r\n usedFonts[activeFontKey] = true;\r\n return scope;\r\n };\r\n\r\n // PDF supports these path painting and clip path operators:\r\n //\r\n // S - stroke\r\n // s - close/stroke\r\n // f (F) - fill non-zero\r\n // f* - fill evenodd\r\n // B - fill stroke nonzero\r\n // B* - fill stroke evenodd\r\n // b - close fill stroke nonzero\r\n // b* - close fill stroke evenodd\r\n // n - nothing (consume path)\r\n // W - clip nonzero\r\n // W* - clip evenodd\r\n //\r\n // In order to keep the API small, we omit the close-and-fill/stroke operators and provide a separate close()\r\n // method.\r\n /**\r\n *\r\n * @name clip\r\n * @function\r\n * @instance\r\n * @param {string} rule Only possible value is 'evenodd'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description All .clip() after calling drawing ops with a style argument of null.\r\n */\r\n var clip = (API.__private__.clip = API.clip = function(rule) {\r\n // Call .clip() after calling drawing ops with a style argument of null\r\n // W is the PDF clipping op\r\n if (\"evenodd\" === rule) {\r\n out(\"W*\");\r\n } else {\r\n out(\"W\");\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * @name clipEvenOdd\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description Modify the current clip path by intersecting it with the current path using the even-odd rule. Note\r\n * that this will NOT consume the current path. In order to only use this path for clipping call\r\n * {@link API.discardPath} afterwards.\r\n */\r\n API.clipEvenOdd = function() {\r\n return clip(\"evenodd\");\r\n };\r\n\r\n /**\r\n * Consumes the current path without any effect. Mainly used in combination with {@link clip} or\r\n * {@link clipEvenOdd}. The PDF \"n\" operator.\r\n * @name discardPath\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.discardPath = API.discardPath = function() {\r\n out(\"n\");\r\n return this;\r\n };\r\n\r\n var isValidStyle = (API.__private__.isValidStyle = function(style) {\r\n var validStyleVariants = [\r\n undefined,\r\n null,\r\n \"S\",\r\n \"D\",\r\n \"F\",\r\n \"DF\",\r\n \"FD\",\r\n \"f\",\r\n \"f*\",\r\n \"B\",\r\n \"B*\",\r\n \"n\"\r\n ];\r\n var result = false;\r\n if (validStyleVariants.indexOf(style) !== -1) {\r\n result = true;\r\n }\r\n return result;\r\n });\r\n\r\n API.__private__.setDefaultPathOperation = API.setDefaultPathOperation = function(\r\n operator\r\n ) {\r\n if (isValidStyle(operator)) {\r\n defaultPathOperation = operator;\r\n }\r\n return this;\r\n };\r\n\r\n var getStyle = (API.__private__.getStyle = API.getStyle = function(style) {\r\n // see path-painting operators in PDF spec\r\n var op = defaultPathOperation; // stroke\r\n\r\n switch (style) {\r\n case \"D\":\r\n case \"S\":\r\n op = \"S\"; // stroke\r\n break;\r\n case \"F\":\r\n op = \"f\"; // fill\r\n break;\r\n case \"FD\":\r\n case \"DF\":\r\n op = \"B\";\r\n break;\r\n case \"f\":\r\n case \"f*\":\r\n case \"B\":\r\n case \"B*\":\r\n /*\r\n Allow direct use of these PDF path-painting operators:\r\n - f fill using nonzero winding number rule\r\n - f* fill using even-odd rule\r\n - B fill then stroke with fill using non-zero winding number rule\r\n - B* fill then stroke with fill using even-odd rule\r\n */\r\n op = style;\r\n break;\r\n }\r\n return op;\r\n });\r\n\r\n /**\r\n * Close the current path. The PDF \"h\" operator.\r\n * @name close\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n var close = (API.close = function() {\r\n out(\"h\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Stroke the path. The PDF \"S\" operator.\r\n * @name stroke\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.stroke = function() {\r\n out(\"S\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the nonzero winding number rule. If a pattern is provided, the path will be filled\r\n * with this pattern, otherwise with the current fill color. Equivalent to the PDF \"f\" operator.\r\n * @name fill\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fill = function(pattern) {\r\n fillWithOptionalPattern(\"f\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the even-odd rule. The PDF f* operator.\r\n * @see API.fill\r\n * @name fillEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"f*\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the nonzero winding number rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStroke\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStroke = function(pattern) {\r\n fillWithOptionalPattern(\"B\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the even-odd rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStrokeEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be fill-stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStrokeEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"B*\", pattern);\r\n return this;\r\n };\r\n\r\n var fillWithOptionalPattern = function(style, pattern) {\r\n if (typeof pattern === \"object\") {\r\n fillWithPattern(pattern, style);\r\n } else {\r\n out(style);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n if (\r\n style === null ||\r\n (apiMode === ApiMode.ADVANCED && style === undefined)\r\n ) {\r\n return;\r\n }\r\n\r\n style = getStyle(style);\r\n\r\n // stroking / filling / both the path\r\n out(style);\r\n };\r\n\r\n function cloneTilingPattern(patternKey, boundingBox, xStep, yStep, matrix) {\r\n var clone = new TilingPattern(\r\n boundingBox || this.boundingBox,\r\n xStep || this.xStep,\r\n yStep || this.yStep,\r\n this.gState,\r\n matrix || this.matrix\r\n );\r\n clone.stream = this.stream;\r\n var key = patternKey + \"$$\" + this.cloneIndex++ + \"$$\";\r\n addPattern(key, clone);\r\n return clone;\r\n }\r\n\r\n var fillWithPattern = function(patternData, style) {\r\n var patternId = patternMap[patternData.key];\r\n var pattern = patterns[patternId];\r\n\r\n if (pattern instanceof ShadingPattern) {\r\n out(\"q\");\r\n\r\n out(clipRuleFromStyle(style));\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n out(patternData.matrix.toString() + \" cm\");\r\n out(\"/\" + patternId + \" sh\");\r\n out(\"Q\");\r\n } else if (pattern instanceof TilingPattern) {\r\n // pdf draws patterns starting at the bottom left corner and they are not affected by the global transformation,\r\n // so we must flip them\r\n var matrix = new Matrix(1, 0, 0, -1, 0, getPageHeight());\r\n\r\n if (patternData.matrix) {\r\n matrix = matrix.multiply(patternData.matrix || identityMatrix);\r\n // we cannot apply a matrix to the pattern on use so we must abuse the pattern matrix and create new instances\r\n // for each use\r\n patternId = cloneTilingPattern.call(\r\n pattern,\r\n patternData.key,\r\n patternData.boundingBox,\r\n patternData.xStep,\r\n patternData.yStep,\r\n matrix\r\n ).id;\r\n }\r\n\r\n out(\"q\");\r\n out(\"/Pattern cs\");\r\n out(\"/\" + patternId + \" scn\");\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n\r\n out(style);\r\n out(\"Q\");\r\n }\r\n };\r\n\r\n var clipRuleFromStyle = function(style) {\r\n switch (style) {\r\n case \"f\":\r\n case \"F\":\r\n return \"W n\";\r\n case \"f*\":\r\n return \"W* n\";\r\n case \"B\":\r\n return \"W S\";\r\n case \"B*\":\r\n return \"W* S\";\r\n\r\n // these two are for compatibility reasons (in the past, calling any primitive method with a shading pattern\r\n // and \"n\"/\"S\" as style would still fill/fill and stroke the path)\r\n case \"S\":\r\n return \"W S\";\r\n case \"n\":\r\n return \"W n\";\r\n }\r\n };\r\n\r\n /**\r\n * Begin a new subpath by moving the current point to coordinates (x, y). The PDF \"m\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @name moveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var moveTo = (API.moveTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" m\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a straight line segment from the current point to the point (x, y). The PDF \"l\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @memberof jsPDF#\r\n * @name lineTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var lineTo = (API.lineTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" l\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point\r\n * (x3, y3), using (x1, y1) and (x2, y2) as Bézier control points. The new current point shall be (x3, x3).\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {number} x3\r\n * @param {number} y3\r\n * @memberof jsPDF#\r\n * @name curveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var curveTo = (API.curveTo = function(x1, y1, x2, y2, x3, y3) {\r\n out(\r\n [\r\n hpf(scale(x1)),\r\n hpf(transformScaleY(y1)),\r\n hpf(scale(x2)),\r\n hpf(transformScaleY(y2)),\r\n hpf(scale(x3)),\r\n hpf(transformScaleY(y3)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n return this;\r\n });\r\n\r\n /**\r\n * Draw a line on the current page.\r\n *\r\n * @name line\r\n * @function\r\n * @instance\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {string} style A string specifying the painting style or null. Valid styles include: 'S' [default] - stroke, 'F' - fill, and 'DF' (or 'FD') - fill then stroke. A null value postpones setting the style so that a shape may be composed using multiple method calls. The last drawing method call used to define the shape should not have a null style argument. default: 'S'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.line = API.line = function(x1, y1, x2, y2, style) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.line\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1], style || \"S\");\r\n } else {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1]).stroke();\r\n }\r\n };\r\n\r\n /**\r\n * @typedef {Object} PatternData\r\n * {Matrix|undefined} matrix\r\n * {Number|undefined} xStep\r\n * {Number|undefined} yStep\r\n * {Array.|undefined} boundingBox\r\n */\r\n\r\n /**\r\n * Adds series of curves (straight lines or cubic bezier curves) to canvas, starting at `x`, `y` coordinates.\r\n * All data points in `lines` are relative to last line origin.\r\n * `x`, `y` become x1,y1 for first line / curve in the set.\r\n * For lines you only need to specify [x2, y2] - (ending point) vector against x1, y1 starting point.\r\n * For bezier curves you need to specify [x2,y2,x3,y3,x4,y4] - vectors to control points 1, 2, ending point. All vectors are against the start of the curve - x1,y1.\r\n *\r\n * @example .lines([[2,2],[-2,2],[1,1,2,2,3,3],[2,1]], 212,110, [1,1], 'F', false) // line, line, bezier curve, line\r\n * @param {Array} lines Array of *vector* shifts as pairs (lines) or sextets (cubic bezier curves).\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} scale (Defaults to [1.0,1.0]) x,y Scaling factor for all vectors. Elements can be any floating number Sub-one makes drawing smaller. Over-one grows the drawing. Negative flips the direction.\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @param {Boolean=} closed If true, the path is closed with a straight line from the end of the last curve to the starting point.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name lines\r\n */\r\n API.__private__.lines = API.lines = function(\r\n lines,\r\n x,\r\n y,\r\n scale,\r\n style,\r\n closed\r\n ) {\r\n var scalex, scaley, i, l, leg, x2, y2, x3, y3, x4, y4, tmp;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, lines, scale, style)\r\n // in effort to make all calls have similar signature like\r\n // function(content, coordinateX, coordinateY , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (typeof lines === \"number\") {\r\n tmp = y;\r\n y = x;\r\n x = lines;\r\n lines = tmp;\r\n }\r\n\r\n scale = scale || [1, 1];\r\n closed = closed || false;\r\n\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n !Array.isArray(lines) ||\r\n !Array.isArray(scale) ||\r\n !isValidStyle(style) ||\r\n typeof closed !== \"boolean\"\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.lines\");\r\n }\r\n\r\n // starting point\r\n moveTo(x, y);\r\n\r\n scalex = scale[0];\r\n scaley = scale[1];\r\n l = lines.length;\r\n //, x2, y2 // bezier only. In page default measurement \"units\", *after* scaling\r\n //, x3, y3 // bezier only. In page default measurement \"units\", *after* scaling\r\n // ending point for all, lines and bezier. . In page default measurement \"units\", *after* scaling\r\n x4 = x; // last / ending point = starting point for first item.\r\n y4 = y; // last / ending point = starting point for first item.\r\n\r\n for (i = 0; i < l; i++) {\r\n leg = lines[i];\r\n if (leg.length === 2) {\r\n // simple line\r\n x4 = leg[0] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[1] * scaley + y4; // here last y4 was prior ending point\r\n lineTo(x4, y4);\r\n } else {\r\n // bezier curve\r\n x2 = leg[0] * scalex + x4; // here last x4 is prior ending point\r\n y2 = leg[1] * scaley + y4; // here last y4 is prior ending point\r\n x3 = leg[2] * scalex + x4; // here last x4 is prior ending point\r\n y3 = leg[3] * scaley + y4; // here last y4 is prior ending point\r\n x4 = leg[4] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[5] * scaley + y4; // here last y4 was prior ending point\r\n curveTo(x2, y2, x3, y3, x4, y4);\r\n }\r\n }\r\n\r\n if (closed) {\r\n close();\r\n }\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Similar to {@link API.lines} but all coordinates are interpreted as absolute coordinates instead of relative.\r\n * @param {Array} lines An array of {op: operator, c: coordinates} object, where op is one of \"m\" (move to), \"l\" (line to)\r\n * \"c\" (cubic bezier curve) and \"h\" (close (sub)path)). c is an array of coordinates. \"m\" and \"l\" expect two, \"c\"\r\n * six and \"h\" an empty array (or undefined).\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name path\r\n */\r\n API.path = function(lines) {\r\n for (var i = 0; i < lines.length; i++) {\r\n var leg = lines[i];\r\n var coords = leg.c;\r\n switch (leg.op) {\r\n case \"m\":\r\n moveTo(coords[0], coords[1]);\r\n break;\r\n case \"l\":\r\n lineTo(coords[0], coords[1]);\r\n break;\r\n case \"c\":\r\n curveTo.apply(this, coords);\r\n break;\r\n case \"h\":\r\n close();\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name rect\r\n */\r\n API.__private__.rect = API.rect = function(x, y, w, h, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.rect\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n h = -h;\r\n }\r\n\r\n out(\r\n [\r\n hpf(scale(x)),\r\n hpf(transformScaleY(y)),\r\n hpf(scale(w)),\r\n hpf(scale(h)),\r\n \"re\"\r\n ].join(\" \")\r\n );\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a triangle to PDF.\r\n *\r\n * @param {number} x1 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y1 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x2 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y2 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x3 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y3 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name triangle\r\n */\r\n API.__private__.triangle = API.triangle = function(\r\n x1,\r\n y1,\r\n x2,\r\n y2,\r\n x3,\r\n y3,\r\n style\r\n ) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n isNaN(x3) ||\r\n isNaN(y3) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.triangle\");\r\n }\r\n this.lines(\r\n [\r\n [x2 - x1, y2 - y1], // vector to point 2\r\n [x3 - x2, y3 - y2], // vector to point 3\r\n [x1 - x3, y1 - y3] // closing vector back to point 1\r\n ],\r\n x1,\r\n y1, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle with rounded corners to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name roundedRect\r\n */\r\n API.__private__.roundedRect = API.roundedRect = function(\r\n x,\r\n y,\r\n w,\r\n h,\r\n rx,\r\n ry,\r\n style\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(w) ||\r\n isNaN(h) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");\r\n }\r\n var MyArc = (4 / 3) * (Math.SQRT2 - 1);\r\n\r\n rx = Math.min(rx, w * 0.5);\r\n ry = Math.min(ry, h * 0.5);\r\n\r\n this.lines(\r\n [\r\n [w - 2 * rx, 0],\r\n [rx * MyArc, 0, rx, ry - ry * MyArc, rx, ry],\r\n [0, h - 2 * ry],\r\n [0, ry * MyArc, -(rx * MyArc), ry, -rx, ry],\r\n [-w + 2 * rx, 0],\r\n [-(rx * MyArc), 0, -rx, -(ry * MyArc), -rx, -ry],\r\n [0, -h + 2 * ry],\r\n [0, -(ry * MyArc), rx * MyArc, -ry, rx, -ry]\r\n ],\r\n x + rx,\r\n y, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an ellipse to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name ellipse\r\n */\r\n API.__private__.ellipse = API.ellipse = function(x, y, rx, ry, style) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");\r\n }\r\n var lx = (4 / 3) * (Math.SQRT2 - 1) * rx,\r\n ly = (4 / 3) * (Math.SQRT2 - 1) * ry;\r\n\r\n moveTo(x + rx, y);\r\n curveTo(x + rx, y - ly, x + lx, y - ry, x, y - ry);\r\n curveTo(x - lx, y - ry, x - rx, y - ly, x - rx, y);\r\n curveTo(x - rx, y + ly, x - lx, y + ry, x, y + ry);\r\n curveTo(x + lx, y + ry, x + rx, y + ly, x + rx, y);\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an circle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} r Radius (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name circle\r\n */\r\n API.__private__.circle = API.circle = function(x, y, r, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(r) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.circle\");\r\n }\r\n return this.ellipse(x, y, r, r, style);\r\n };\r\n\r\n /**\r\n * Sets text font face, variant for upcoming text elements.\r\n * See output of jsPDF.getFontList() for possible font names, styles.\r\n *\r\n * @param {string} fontName Font name or family. Example: \"times\".\r\n * @param {string} fontStyle Font style or variant. Example: \"italic\".\r\n * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFont\r\n */\r\n API.setFont = function(fontName, fontStyle, fontWeight) {\r\n if (fontWeight) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n activeFontKey = getFont(fontName, fontStyle, {\r\n disableWarning: false\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets text font face, variant for upcoming text elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {Object}\r\n * @memberof jsPDF#\r\n * @name getFont\r\n */\r\n var getFontEntry = (API.__private__.getFont = API.getFont = function() {\r\n return fonts[getFont.apply(API, arguments)];\r\n });\r\n\r\n /**\r\n * Returns an object - a tree of fontName to fontStyle relationships available to\r\n * active PDF document.\r\n *\r\n * @public\r\n * @function\r\n * @instance\r\n * @returns {Object} Like {'times':['normal', 'italic', ... ], 'arial':['normal', 'bold', ... ], ... }\r\n * @memberof jsPDF#\r\n * @name getFontList\r\n */\r\n API.__private__.getFontList = API.getFontList = function() {\r\n var list = {},\r\n fontName,\r\n fontStyle;\r\n\r\n for (fontName in fontmap) {\r\n if (fontmap.hasOwnProperty(fontName)) {\r\n list[fontName] = [];\r\n for (fontStyle in fontmap[fontName]) {\r\n if (fontmap[fontName].hasOwnProperty(fontStyle)) {\r\n list[fontName].push(fontStyle);\r\n }\r\n }\r\n }\r\n }\r\n return list;\r\n };\r\n\r\n /**\r\n * Add a custom font to the current instance.\r\n *\r\n * @param {string} postScriptName PDF specification full name for the font.\r\n * @param {string} id PDF-document-instance-specific label assinged to the font.\r\n * @param {string} fontStyle Style of the Font.\r\n * @param {number | string} fontWeight Weight of the Font.\r\n * @param {Object} encoding Encoding_name-to-Font_metrics_object mapping.\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @name addFont\r\n * @returns {string} fontId\r\n */\r\n API.addFont = function(\r\n postScriptName,\r\n fontName,\r\n fontStyle,\r\n fontWeight,\r\n encoding\r\n ) {\r\n var encodingOptions = [\r\n \"StandardEncoding\",\r\n \"MacRomanEncoding\",\r\n \"Identity-H\",\r\n \"WinAnsiEncoding\"\r\n ];\r\n if (arguments[3] && encodingOptions.indexOf(arguments[3]) !== -1) {\r\n //IE 11 fix\r\n encoding = arguments[3];\r\n } else if (arguments[3] && encodingOptions.indexOf(arguments[3]) == -1) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n encoding = encoding || \"Identity-H\";\r\n return addFont.call(this, postScriptName, fontName, fontStyle, encoding);\r\n };\r\n\r\n var lineWidth = options.lineWidth || 0.200025; // 2mm\r\n /**\r\n * Gets the line width, default: 0.200025.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineWidth\r\n * @memberof jsPDF#\r\n * @name getLineWidth\r\n */\r\n var getLineWidth = (API.__private__.getLineWidth = API.getLineWidth = function() {\r\n return lineWidth;\r\n });\r\n\r\n /**\r\n * Sets line width for upcoming lines.\r\n *\r\n * @param {number} width Line width (in units declared at inception of PDF document).\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineWidth\r\n */\r\n var setLineWidth = (API.__private__.setLineWidth = API.setLineWidth = function(\r\n width\r\n ) {\r\n lineWidth = width;\r\n out(hpf(scale(width)) + \" w\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Sets the dash pattern for upcoming lines.\r\n *\r\n * To reset the settings simply call the method without any parameters.\r\n * @param {Array} dashArray An array containing 0-2 numbers. The first number sets the length of the\r\n * dashes, the second number the length of the gaps. If the second number is missing, the gaps are considered\r\n * to be as long as the dashes. An empty array means solid, unbroken lines.\r\n * @param {number} dashPhase The phase lines start with.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineDashPattern\r\n */\r\n API.__private__.setLineDash = jsPDF.API.setLineDash = jsPDF.API.setLineDashPattern = function(\r\n dashArray,\r\n dashPhase\r\n ) {\r\n dashArray = dashArray || [];\r\n dashPhase = dashPhase || 0;\r\n\r\n if (isNaN(dashPhase) || !Array.isArray(dashArray)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");\r\n }\r\n\r\n dashArray = dashArray\r\n .map(function(x) {\r\n return hpf(scale(x));\r\n })\r\n .join(\" \");\r\n dashPhase = hpf(scale(dashPhase));\r\n\r\n out(\"[\" + dashArray + \"] \" + dashPhase + \" d\");\r\n return this;\r\n };\r\n\r\n var lineHeightFactor;\r\n\r\n var getLineHeight = (API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n });\r\n\r\n API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n };\r\n\r\n /**\r\n * Sets the LineHeightFactor of proportion.\r\n *\r\n * @param {number} value LineHeightFactor value. Default: 1.15.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineHeightFactor\r\n */\r\n var setLineHeightFactor = (API.__private__.setLineHeightFactor = API.setLineHeightFactor = function(\r\n value\r\n ) {\r\n value = value || 1.15;\r\n if (typeof value === \"number\") {\r\n lineHeightFactor = value;\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * Gets the LineHeightFactor, default: 1.15.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineHeightFactor\r\n * @memberof jsPDF#\r\n * @name getLineHeightFactor\r\n */\r\n var getLineHeightFactor = (API.__private__.getLineHeightFactor = API.getLineHeightFactor = function() {\r\n return lineHeightFactor;\r\n });\r\n\r\n setLineHeightFactor(options.lineHeight);\r\n\r\n var getHorizontalCoordinate = (API.__private__.getHorizontalCoordinate = function(\r\n value\r\n ) {\r\n return scale(value);\r\n });\r\n\r\n var getVerticalCoordinate = (API.__private__.getVerticalCoordinate = function(\r\n value\r\n ) {\r\n if (apiMode === ApiMode.ADVANCED) {\r\n return value;\r\n } else {\r\n var pageHeight =\r\n pagesContext[currentPage].mediaBox.topRightY -\r\n pagesContext[currentPage].mediaBox.bottomLeftY;\r\n return pageHeight - scale(value);\r\n }\r\n });\r\n\r\n var getHorizontalCoordinateString = (API.__private__.getHorizontalCoordinateString = API.getHorizontalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getHorizontalCoordinate(value));\r\n });\r\n\r\n var getVerticalCoordinateString = (API.__private__.getVerticalCoordinateString = API.getVerticalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getVerticalCoordinate(value));\r\n });\r\n\r\n var strokeColor = options.strokeColor || \"0 G\";\r\n\r\n /**\r\n * Gets the stroke color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getDrawColor\r\n */\r\n API.__private__.getStrokeColor = API.getDrawColor = function() {\r\n return decodeColorString(strokeColor);\r\n };\r\n\r\n /**\r\n * Sets the stroke color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setDrawColor\r\n */\r\n API.__private__.setStrokeColor = API.setDrawColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"draw\",\r\n precision: 2\r\n };\r\n\r\n strokeColor = encodeColorString(options);\r\n out(strokeColor);\r\n return this;\r\n };\r\n\r\n var fillColor = options.fillColor || \"0 g\";\r\n\r\n /**\r\n * Gets the fill color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getFillColor\r\n */\r\n API.__private__.getFillColor = API.getFillColor = function() {\r\n return decodeColorString(fillColor);\r\n };\r\n\r\n /**\r\n * Sets the fill color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFillColor\r\n */\r\n API.__private__.setFillColor = API.setFillColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"fill\",\r\n precision: 2\r\n };\r\n\r\n fillColor = encodeColorString(options);\r\n out(fillColor);\r\n return this;\r\n };\r\n\r\n var textColor = options.textColor || \"0 g\";\r\n /**\r\n * Gets the text color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getTextColor\r\n */\r\n var getTextColor = (API.__private__.getTextColor = API.getTextColor = function() {\r\n return decodeColorString(textColor);\r\n });\r\n /**\r\n * Sets the text color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setTextColor\r\n */\r\n API.__private__.setTextColor = API.setTextColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"text\",\r\n precision: 3\r\n };\r\n textColor = encodeColorString(options);\r\n\r\n return this;\r\n };\r\n\r\n var activeCharSpace = options.charSpace;\r\n\r\n /**\r\n * Get global value of CharSpace.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} charSpace\r\n * @memberof jsPDF#\r\n * @name getCharSpace\r\n */\r\n var getCharSpace = (API.__private__.getCharSpace = API.getCharSpace = function() {\r\n return parseFloat(activeCharSpace || 0);\r\n });\r\n\r\n /**\r\n * Set global value of CharSpace.\r\n *\r\n * @param {number} charSpace\r\n * @function\r\n * @instance\r\n * @returns {jsPDF} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name setCharSpace\r\n */\r\n API.__private__.setCharSpace = API.setCharSpace = function(charSpace) {\r\n if (isNaN(charSpace)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");\r\n }\r\n activeCharSpace = charSpace;\r\n return this;\r\n };\r\n\r\n var lineCapID = 0;\r\n /**\r\n * Is an Object providing a mapping from human-readable to\r\n * integer flag values designating the varieties of line cap\r\n * and join styles.\r\n *\r\n * @memberof jsPDF#\r\n * @name CapJoinStyles\r\n */\r\n API.CapJoinStyles = {\r\n 0: 0,\r\n butt: 0,\r\n but: 0,\r\n miter: 0,\r\n 1: 1,\r\n round: 1,\r\n rounded: 1,\r\n circle: 1,\r\n 2: 2,\r\n projecting: 2,\r\n project: 2,\r\n square: 2,\r\n bevel: 2\r\n };\r\n\r\n /**\r\n * Sets the line cap styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line cap.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineCap\r\n */\r\n API.__private__.setLineCap = API.setLineCap = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line cap style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineCapID = id;\r\n out(id + \" J\");\r\n\r\n return this;\r\n };\r\n\r\n var lineJoinID = 0;\r\n /**\r\n * Sets the line join styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line join.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineJoin\r\n */\r\n API.__private__.setLineJoin = API.setLineJoin = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line join style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineJoinID = id;\r\n out(id + \" j\");\r\n\r\n return this;\r\n };\r\n\r\n var miterLimit;\r\n /**\r\n * Sets the miterLimit property, which effects the maximum miter length.\r\n *\r\n * @param {number} length The length of the miter\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineMiterLimit\r\n */\r\n API.__private__.setLineMiterLimit = API.__private__.setMiterLimit = API.setLineMiterLimit = API.setMiterLimit = function(\r\n length\r\n ) {\r\n length = length || 0;\r\n if (isNaN(length)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");\r\n }\r\n out(hpf(scale(length)) + \" M\");\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * An object representing a pdf graphics state.\r\n * @class GState\r\n */\r\n\r\n /**\r\n *\r\n * @param parameters A parameter object that contains all properties this graphics state wants to set.\r\n * Supported are: opacity, stroke-opacity\r\n * @constructor\r\n */\r\n API.GState = GState;\r\n\r\n /**\r\n * Sets a either previously added {@link GState} (via {@link addGState}) or a new {@link GState}.\r\n * @param {String|GState} gState If type is string, a previously added GState is used, if type is GState\r\n * it will be added before use.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setGState\r\n */\r\n API.setGState = function(gState) {\r\n if (typeof gState === \"string\") {\r\n gState = gStates[gStatesMap[gState]];\r\n } else {\r\n gState = addGState(null, gState);\r\n }\r\n\r\n if (!gState.equals(activeGState)) {\r\n out(\"/\" + gState.id + \" gs\");\r\n activeGState = gState;\r\n }\r\n };\r\n\r\n /**\r\n * Adds a new Graphics State. Duplicates are automatically eliminated.\r\n * @param {String} key Might also be null, if no later reference to this gState is needed\r\n * @param {Object} gState The gState object\r\n */\r\n var addGState = function(key, gState) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (key && gStatesMap[key]) return;\r\n var duplicate = false;\r\n for (var s in gStates) {\r\n if (gStates.hasOwnProperty(s)) {\r\n if (gStates[s].equals(gState)) {\r\n duplicate = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (duplicate) {\r\n gState = gStates[s];\r\n } else {\r\n var gStateKey = \"GS\" + (Object.keys(gStates).length + 1).toString(10);\r\n gStates[gStateKey] = gState;\r\n gState.id = gStateKey;\r\n }\r\n\r\n // several user keys may point to the same GState object\r\n key && (gStatesMap[key] = gState.id);\r\n\r\n events.publish(\"addGState\", gState);\r\n\r\n return gState;\r\n };\r\n\r\n /**\r\n * Adds a new {@link GState} for later use. See {@link setGState}.\r\n * @param {String} key\r\n * @param {GState} gState\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addGState\r\n */\r\n API.addGState = function(key, gState) {\r\n addGState(key, gState);\r\n return this;\r\n };\r\n\r\n /**\r\n * Saves the current graphics state (\"pushes it on the stack\"). It can be restored by {@link restoreGraphicsState}\r\n * later. Here, the general pdf graphics state is meant, also including the current transformation matrix,\r\n * fill and stroke colors etc.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name saveGraphicsState\r\n */\r\n API.saveGraphicsState = function() {\r\n out(\"q\");\r\n // as we cannot set font key and size independently we must keep track of both\r\n fontStateStack.push({\r\n key: activeFontKey,\r\n size: activeFontSize,\r\n color: textColor\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Restores a previously saved graphics state saved by {@link saveGraphicsState} (\"pops the stack\").\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name restoreGraphicsState\r\n */\r\n API.restoreGraphicsState = function() {\r\n out(\"Q\");\r\n\r\n // restore previous font state\r\n var fontState = fontStateStack.pop();\r\n activeFontKey = fontState.key;\r\n activeFontSize = fontState.size;\r\n textColor = fontState.color;\r\n\r\n activeGState = null;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Appends this matrix to the left of all previously applied matrices.\r\n *\r\n * @param {Matrix} matrix\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setCurrentTransformationMatrix\r\n */\r\n API.setCurrentTransformationMatrix = function(matrix) {\r\n out(matrix.toString() + \" cm\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Inserts a debug comment into the generated pdf.\r\n * @function\r\n * @instance\r\n * @param {String} text\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name comment\r\n */\r\n API.comment = function(text) {\r\n out(\"#\" + text);\r\n return this;\r\n };\r\n\r\n /**\r\n * Point\r\n */\r\n var Point = function(x, y) {\r\n var _x = x || 0;\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n get: function() {\r\n return _x;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _x = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _y = y || 0;\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n get: function() {\r\n return _y;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _y = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _type = \"pt\";\r\n Object.defineProperty(this, \"type\", {\r\n enumerable: true,\r\n get: function() {\r\n return _type;\r\n },\r\n set: function(value) {\r\n _type = value.toString();\r\n }\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Rectangle\r\n */\r\n var Rectangle = function(x, y, w, h) {\r\n Point.call(this, x, y);\r\n this.type = \"rect\";\r\n\r\n var _w = w || 0;\r\n Object.defineProperty(this, \"w\", {\r\n enumerable: true,\r\n get: function() {\r\n return _w;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _w = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _h = h || 0;\r\n Object.defineProperty(this, \"h\", {\r\n enumerable: true,\r\n get: function() {\r\n return _h;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _h = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * FormObject/RenderTarget\r\n */\r\n\r\n var RenderTarget = function() {\r\n this.page = page;\r\n this.currentPage = currentPage;\r\n this.pages = pages.slice(0);\r\n this.pagesContext = pagesContext.slice(0);\r\n this.x = pageX;\r\n this.y = pageY;\r\n this.matrix = pageMatrix;\r\n this.width = getPageWidth(currentPage);\r\n this.height = getPageHeight(currentPage);\r\n this.outputDestination = outputDestination;\r\n\r\n this.id = \"\"; // set by endFormObject()\r\n this.objectNumber = -1; // will be set by putXObject()\r\n };\r\n\r\n RenderTarget.prototype.restore = function() {\r\n page = this.page;\r\n currentPage = this.currentPage;\r\n pagesContext = this.pagesContext;\r\n pages = this.pages;\r\n pageX = this.x;\r\n pageY = this.y;\r\n pageMatrix = this.matrix;\r\n setPageWidth(currentPage, this.width);\r\n setPageHeight(currentPage, this.height);\r\n outputDestination = this.outputDestination;\r\n };\r\n\r\n var beginNewRenderTarget = function(x, y, width, height, matrix) {\r\n // save current state\r\n renderTargetStack.push(new RenderTarget());\r\n\r\n // clear pages\r\n page = currentPage = 0;\r\n pages = [];\r\n pageX = x;\r\n pageY = y;\r\n\r\n pageMatrix = matrix;\r\n\r\n beginPage([width, height]);\r\n };\r\n\r\n var endFormObject = function(key) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (renderTargetMap[key]) {\r\n renderTargetStack.pop().restore();\r\n return;\r\n }\r\n\r\n // save the created xObject\r\n var newXObject = new RenderTarget();\r\n\r\n var xObjectId = \"Xo\" + (Object.keys(renderTargets).length + 1).toString(10);\r\n newXObject.id = xObjectId;\r\n\r\n renderTargetMap[key] = xObjectId;\r\n renderTargets[xObjectId] = newXObject;\r\n\r\n events.publish(\"addFormObject\", newXObject);\r\n\r\n // restore state from stack\r\n renderTargetStack.pop().restore();\r\n };\r\n\r\n /**\r\n * Starts a new pdf form object, which means that all consequent draw calls target a new independent object\r\n * until {@link endFormObject} is called. The created object can be referenced and drawn later using\r\n * {@link doFormObject}. Nested form objects are possible.\r\n * x, y, width, height set the bounding box that is used to clip the content.\r\n *\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} width\r\n * @param {number} height\r\n * @param {Matrix} matrix The matrix that will be applied to convert the form objects coordinate system to\r\n * the parent's.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name beginFormObject\r\n */\r\n API.beginFormObject = function(x, y, width, height, matrix) {\r\n // The user can set the output target to a new form object. Nested form objects are possible.\r\n // Currently, they use the resource dictionary of the surrounding stream. This should be changed, as\r\n // the PDF-Spec states:\r\n // \"In PDF 1.2 and later versions, form XObjects may be independent of the content streams in which\r\n // they appear, and this is strongly recommended although not requiredIn PDF 1.2 and later versions,\r\n // form XObjects may be independent of the content streams in which they appear, and this is strongly\r\n // recommended although not required\"\r\n beginNewRenderTarget(x, y, width, height, matrix);\r\n return this;\r\n };\r\n\r\n /**\r\n * Completes and saves the form object.\r\n * @param {String} key The key by which this form object can be referenced.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name endFormObject\r\n */\r\n API.endFormObject = function(key) {\r\n endFormObject(key);\r\n return this;\r\n };\r\n\r\n /**\r\n * Draws the specified form object by referencing to the respective pdf XObject created with\r\n * {@link API.beginFormObject} and {@link endFormObject}.\r\n * The location is determined by matrix.\r\n *\r\n * @param {String} key The key to the form object.\r\n * @param {Matrix} matrix The matrix applied before drawing the form object.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name doFormObject\r\n */\r\n API.doFormObject = function(key, matrix) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n out(\"q\");\r\n out(matrix.toString() + \" cm\");\r\n out(\"/\" + xObject.id + \" Do\");\r\n out(\"Q\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Returns the form object specified by key.\r\n * @param key {String}\r\n * @returns {{x: number, y: number, width: number, height: number, matrix: Matrix}}\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name getFormObject\r\n */\r\n API.getFormObject = function(key) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n return {\r\n x: xObject.x,\r\n y: xObject.y,\r\n width: xObject.width,\r\n height: xObject.height,\r\n matrix: xObject.matrix\r\n };\r\n };\r\n\r\n /**\r\n * Saves as PDF document. An alias of jsPDF.output('save', 'filename.pdf').\r\n * Uses FileSaver.js-method saveAs.\r\n *\r\n * @memberof jsPDF#\r\n * @name save\r\n * @function\r\n * @instance\r\n * @param {string} filename The filename including extension.\r\n * @param {Object} options An Object with additional options, possible options: 'returnPromise'.\r\n * @returns {jsPDF|Promise} jsPDF-instance */\r\n API.save = function(filename, options) {\r\n filename = filename || \"generated.pdf\";\r\n\r\n options = options || {};\r\n options.returnPromise = options.returnPromise || false;\r\n\r\n if (options.returnPromise === false) {\r\n saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n return this;\r\n } else {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n var result = saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n resolve(result);\r\n } catch (e) {\r\n reject(e.message);\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n // applying plugins (more methods) ON TOP of built-in API.\r\n // this is intentional as we allow plugins to override\r\n // built-ins\r\n for (var plugin in jsPDF.API) {\r\n if (jsPDF.API.hasOwnProperty(plugin)) {\r\n if (plugin === \"events\" && jsPDF.API.events.length) {\r\n (function(events, newEvents) {\r\n // jsPDF.API.events is a JS Array of Arrays\r\n // where each Array is a pair of event name, handler\r\n // Events were added by plugins to the jsPDF instantiator.\r\n // These are always added to the new instance and some ran\r\n // during instantiation.\r\n var eventname, handler_and_args, i;\r\n\r\n for (i = newEvents.length - 1; i !== -1; i--) {\r\n // subscribe takes 3 args: 'topic', function, runonce_flag\r\n // if undefined, runonce is false.\r\n // users can attach callback directly,\r\n // or they can attach an array with [callback, runonce_flag]\r\n // that's what the \"apply\" magic is for below.\r\n eventname = newEvents[i][0];\r\n handler_and_args = newEvents[i][1];\r\n events.subscribe.apply(\r\n events,\r\n [eventname].concat(\r\n typeof handler_and_args === \"function\"\r\n ? [handler_and_args]\r\n : handler_and_args\r\n )\r\n );\r\n }\r\n })(events, jsPDF.API.events);\r\n } else {\r\n API[plugin] = jsPDF.API[plugin];\r\n }\r\n }\r\n }\r\n\r\n var getPageWidth = (API.getPageWidth = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightX -\r\n pagesContext[pageNumber].mediaBox.bottomLeftX) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageWidth = (API.setPageWidth = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightX =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftX;\r\n });\r\n\r\n var getPageHeight = (API.getPageHeight = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightY -\r\n pagesContext[pageNumber].mediaBox.bottomLeftY) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageHeight = (API.setPageHeight = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightY =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftY;\r\n });\r\n\r\n /**\r\n * Object exposing internal API to plugins\r\n * @public\r\n * @ignore\r\n */\r\n API.internal = {\r\n pdfEscape: pdfEscape,\r\n getStyle: getStyle,\r\n getFont: getFontEntry,\r\n getFontSize: getFontSize,\r\n getCharSpace: getCharSpace,\r\n getTextColor: getTextColor,\r\n getLineHeight: getLineHeight,\r\n getLineHeightFactor: getLineHeightFactor,\r\n getLineWidth: getLineWidth,\r\n write: write,\r\n getHorizontalCoordinate: getHorizontalCoordinate,\r\n getVerticalCoordinate: getVerticalCoordinate,\r\n getCoordinateString: getHorizontalCoordinateString,\r\n getVerticalCoordinateString: getVerticalCoordinateString,\r\n collections: {},\r\n newObject: newObject,\r\n newAdditionalObject: newAdditionalObject,\r\n newObjectDeferred: newObjectDeferred,\r\n newObjectDeferredBegin: newObjectDeferredBegin,\r\n getFilters: getFilters,\r\n putStream: putStream,\r\n events: events,\r\n scaleFactor: scaleFactor,\r\n pageSize: {\r\n getWidth: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n setWidth: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n getHeight: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n setHeight: function(value) {\r\n setPageHeight(currentPage, value);\r\n }\r\n },\r\n encryptionOptions: encryptionOptions,\r\n encryption: encryption,\r\n getEncryptor: getEncryptor,\r\n output: output,\r\n getNumberOfPages: getNumberOfPages,\r\n pages: pages,\r\n out: out,\r\n f2: f2,\r\n f3: f3,\r\n getPageInfo: getPageInfo,\r\n getPageInfoByObjId: getPageInfoByObjId,\r\n getCurrentPageInfo: getCurrentPageInfo,\r\n getPDFVersion: getPdfVersion,\r\n Point: Point,\r\n Rectangle: Rectangle,\r\n Matrix: Matrix,\r\n hasHotfix: hasHotfix //Expose the hasHotfix check so plugins can also check them.\r\n };\r\n\r\n Object.defineProperty(API.internal.pageSize, \"width\", {\r\n get: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n set: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(API.internal.pageSize, \"height\", {\r\n get: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n set: function(value) {\r\n setPageHeight(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n //////////////////////////////////////////////////////\r\n // continuing initialization of jsPDF Document object\r\n //////////////////////////////////////////////////////\r\n // Add the first page automatically\r\n addFonts.call(API, standardFonts);\r\n activeFontKey = \"F1\";\r\n _addPage(format, orientation);\r\n\r\n events.publish(\"initialized\");\r\n return API;\r\n}\r\n\r\n/**\r\n * jsPDF.API is a STATIC property of jsPDF class.\r\n * jsPDF.API is an object you can add methods and properties to.\r\n * The methods / properties you add will show up in new jsPDF objects.\r\n *\r\n * One property is prepopulated. It is the 'events' Object. Plugin authors can add topics,\r\n * callbacks to this object. These will be reassigned to all new instances of jsPDF.\r\n *\r\n * @static\r\n * @public\r\n * @memberof jsPDF#\r\n * @name API\r\n *\r\n * @example\r\n * jsPDF.API.mymethod = function(){\r\n * // 'this' will be ref to internal API object. see jsPDF source\r\n * // , so you can refer to built-in methods like so:\r\n * // this.line(....)\r\n * // this.text(....)\r\n * }\r\n * var pdfdoc = new jsPDF()\r\n * pdfdoc.mymethod() // <- !!!!!!\r\n */\r\njsPDF.API = {\r\n events: []\r\n};\r\n/**\r\n * The version of jsPDF.\r\n * @name version\r\n * @type {string}\r\n * @memberof jsPDF#\r\n */\r\njsPDF.version = \"0.0.0\";\r\n\r\nexport { jsPDF, ShadingPattern, TilingPattern, GState };\r\nexport default jsPDF;\r\n","/* global jsPDF */\n/**\n * @license\n * Copyright (c) 2016 Alexander Weidt,\n * https://github.com/BiggA94\n *\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF AcroForm Plugin\n * @module AcroForm\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\nvar jsPDFAPI = jsPDF.API;\nvar scaleFactor = 1;\n\nvar pdfEscape = function(value) {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\(/g, \"\\\\(\")\n .replace(/\\)/g, \"\\\\)\");\n};\nvar pdfUnescape = function(value) {\n return value\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\(/g, \"(\")\n .replace(/\\\\\\)/g, \")\");\n};\n\nvar f2 = function(number) {\n return number.toFixed(2); // Ie, %.2f\n};\n\nvar f5 = function(number) {\n return number.toFixed(5); // Ie, %.2f\n};\n\njsPDFAPI.__acroform__ = {};\nvar inherit = function(child, parent) {\n child.prototype = Object.create(parent.prototype);\n child.prototype.constructor = child;\n};\n\nvar scale = function(x) {\n return x * scaleFactor;\n};\n\nvar createFormXObject = function(formObject) {\n var xobj = new AcroFormXObject();\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n xobj.BBox = [0, 0, Number(f2(width)), Number(f2(height))];\n return xobj;\n};\n\n/**\n * Bit-Operations\n */\nvar setBit = (jsPDFAPI.__acroform__.setBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number |= bitMask;\n\n return number;\n});\n\nvar clearBit = (jsPDFAPI.__acroform__.clearBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number &= ~bitMask;\n\n return number;\n});\n\nvar getBit = (jsPDFAPI.__acroform__.getBit = function(number, bitPosition) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBit\"\n );\n }\n return (number & (1 << bitPosition)) === 0 ? 0 : 1;\n});\n\n/*\n * Ff starts counting the bit position at 1 and not like javascript at 0\n */\nvar getBitForPdf = (jsPDFAPI.__acroform__.getBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\"\n );\n }\n return getBit(number, bitPosition - 1);\n});\n\nvar setBitForPdf = (jsPDFAPI.__acroform__.setBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\"\n );\n }\n return setBit(number, bitPosition - 1);\n});\n\nvar clearBitForPdf = (jsPDFAPI.__acroform__.clearBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\"\n );\n }\n return clearBit(number, bitPosition - 1);\n});\n\nvar calculateCoordinates = (jsPDFAPI.__acroform__.calculateCoordinates = function(\n args,\n scope\n) {\n var getHorizontalCoordinate = scope.internal.getHorizontalCoordinate;\n var getVerticalCoordinate = scope.internal.getVerticalCoordinate;\n var x = args[0];\n var y = args[1];\n var w = args[2];\n var h = args[3];\n\n var coordinates = {};\n\n coordinates.lowerLeft_X = getHorizontalCoordinate(x) || 0;\n coordinates.lowerLeft_Y = getVerticalCoordinate(y + h) || 0;\n coordinates.upperRight_X = getHorizontalCoordinate(x + w) || 0;\n coordinates.upperRight_Y = getVerticalCoordinate(y) || 0;\n\n return [\n Number(f2(coordinates.lowerLeft_X)),\n Number(f2(coordinates.lowerLeft_Y)),\n Number(f2(coordinates.upperRight_X)),\n Number(f2(coordinates.upperRight_Y))\n ];\n});\n\nvar calculateAppearanceStream = function(formObject) {\n if (formObject.appearanceStreamContent) {\n return formObject.appearanceStreamContent;\n }\n\n if (!formObject.V && !formObject.DV) {\n return;\n }\n\n // else calculate it\n\n var stream = [];\n var text = formObject._V || formObject.DV;\n var calcRes = calculateX(formObject, text);\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n\n //PDF 32000-1:2008, page 444\n stream.push(\"/Tx BMC\");\n stream.push(\"q\");\n stream.push(\"BT\"); // Begin Text\n stream.push(formObject.scope.__private__.encodeColorString(formObject.color));\n stream.push(\"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf\");\n stream.push(\"1 0 0 1 0 0 Tm\"); // Transformation Matrix\n stream.push(calcRes.text);\n stream.push(\"ET\"); // End Text\n stream.push(\"Q\");\n stream.push(\"EMC\");\n\n var appearanceStreamContent = createFormXObject(formObject);\n appearanceStreamContent.scope = formObject.scope;\n appearanceStreamContent.stream = stream.join(\"\\n\");\n return appearanceStreamContent;\n};\n\nvar calculateX = function(formObject, text) {\n var maxFontSize =\n formObject.fontSize === 0 ? formObject.maxFontSize : formObject.fontSize;\n var returnValue = {\n text: \"\",\n fontSize: \"\"\n };\n // Remove Brackets\n text = text.substr(0, 1) == \"(\" ? text.substr(1) : text;\n text =\n text.substr(text.length - 1) == \")\"\n ? text.substr(0, text.length - 1)\n : text;\n // split into array of words\n var textSplit = text.split(\" \");\n if (formObject.multiline) {\n textSplit = textSplit.map(word => word.split(\"\\n\"));\n } else {\n textSplit = textSplit.map(word => [word]);\n }\n\n var fontSize = maxFontSize; // The Starting fontSize (The Maximum)\n var lineSpacing = 2;\n var borderPadding = 2;\n\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n height = height < 0 ? -height : height;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n width = width < 0 ? -width : width;\n\n var isSmallerThanWidth = function(i, lastLine, fontSize) {\n if (i + 1 < textSplit.length) {\n var tmp = lastLine + \" \" + textSplit[i + 1][0];\n var TextWidth = calculateFontSpace(tmp, formObject, fontSize).width;\n var FieldWidth = width - 2 * borderPadding;\n return TextWidth <= FieldWidth;\n } else {\n return false;\n }\n };\n\n fontSize++;\n FontSize: while (fontSize > 0) {\n text = \"\";\n fontSize--;\n var textHeight = calculateFontSpace(\"3\", formObject, fontSize).height;\n var startY = formObject.multiline\n ? height - fontSize\n : (height - textHeight) / 2;\n startY += lineSpacing;\n var startX;\n\n var lastY = startY;\n var firstWordInLine = 0,\n lastWordInLine = 0;\n var lastLength;\n var currWord = 0;\n\n if (fontSize <= 0) {\n // In case, the Text doesn't fit at all\n fontSize = 12;\n text = \"(...) Tj\\n\";\n text +=\n \"% Width of Text: \" +\n calculateFontSpace(text, formObject, fontSize).width +\n \", FieldWidth:\" +\n width +\n \"\\n\";\n break;\n }\n\n var lastLine = \"\";\n var lineCount = 0;\n Line: for (var i = 0; i < textSplit.length; i++) {\n if (textSplit.hasOwnProperty(i)) {\n let isWithNewLine = false;\n if (textSplit[i].length !== 1 && currWord !== textSplit[i].length - 1) {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n continue FontSize;\n }\n\n lastLine += textSplit[i][currWord];\n isWithNewLine = true;\n lastWordInLine = i;\n i--;\n } else {\n lastLine += textSplit[i][currWord] + \" \";\n lastLine =\n lastLine.substr(lastLine.length - 1) == \" \"\n ? lastLine.substr(0, lastLine.length - 1)\n : lastLine;\n var key = parseInt(i);\n var nextLineIsSmaller = isSmallerThanWidth(key, lastLine, fontSize);\n var isLastWord = i >= textSplit.length - 1;\n\n if (nextLineIsSmaller && !isLastWord) {\n lastLine += \" \";\n currWord = 0;\n continue; // Line\n } else if (!nextLineIsSmaller && !isLastWord) {\n if (!formObject.multiline) {\n continue FontSize;\n } else {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the\n // FieldObject\n continue FontSize;\n }\n lastWordInLine = key;\n // go on\n }\n } else if (isLastWord) {\n lastWordInLine = key;\n } else {\n if (\n formObject.multiline &&\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the FieldObject\n continue FontSize;\n }\n }\n }\n // Remove last blank\n\n var line = \"\";\n\n for (var x = firstWordInLine; x <= lastWordInLine; x++) {\n var currLine = textSplit[x];\n if (formObject.multiline) {\n if (x === lastWordInLine) {\n line += currLine[currWord] + \" \";\n currWord = (currWord + 1) % currLine.length;\n continue;\n }\n if (x === firstWordInLine) {\n line += currLine[currLine.length - 1] + \" \";\n continue;\n }\n }\n line += currLine[0] + \" \";\n }\n\n // Remove last blank\n line =\n line.substr(line.length - 1) == \" \"\n ? line.substr(0, line.length - 1)\n : line;\n // lastLength -= blankSpace.width;\n lastLength = calculateFontSpace(line, formObject, fontSize).width;\n\n // Calculate startX\n switch (formObject.textAlign) {\n case \"right\":\n startX = width - lastLength - borderPadding;\n break;\n case \"center\":\n startX = (width - lastLength) / 2;\n break;\n case \"left\":\n default:\n startX = borderPadding;\n break;\n }\n text += f2(startX) + \" \" + f2(lastY) + \" Td\\n\";\n text += \"(\" + pdfEscape(line) + \") Tj\\n\";\n // reset X in PDF\n text += -f2(startX) + \" 0 Td\\n\";\n\n // After a Line, adjust y position\n lastY = -(fontSize + lineSpacing);\n\n // Reset for next iteration step\n lastLength = 0;\n firstWordInLine = isWithNewLine ? lastWordInLine : lastWordInLine + 1;\n lineCount++;\n\n lastLine = \"\";\n continue Line;\n }\n }\n break;\n }\n\n returnValue.text = text;\n returnValue.fontSize = fontSize;\n\n return returnValue;\n};\n\n/**\n * Small workaround for calculating the TextMetric approximately.\n *\n * @param text\n * @param fontsize\n * @returns {TextMetrics} (Has Height and Width)\n */\nvar calculateFontSpace = function(text, formObject, fontSize) {\n var font = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n );\n var width =\n formObject.scope.getStringUnitWidth(text, {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) * parseFloat(fontSize);\n var height =\n formObject.scope.getStringUnitWidth(\"3\", {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) *\n parseFloat(fontSize) *\n 1.5;\n return { height: height, width: width };\n};\n\nvar acroformPluginTemplate = {\n fields: [],\n xForms: [],\n /**\n * acroFormDictionaryRoot contains information about the AcroForm\n * Dictionary 0: The Event-Token, the AcroFormDictionaryCallback has\n * 1: The Object ID of the Root\n */\n acroFormDictionaryRoot: null,\n /**\n * After the PDF gets evaluated, the reference to the root has to be\n * reset, this indicates, whether the root has already been printed\n * out\n */\n printedOut: false,\n internal: null,\n isInitialized: false\n};\n\nvar annotReferenceCallback = function(scope) {\n //set objId to undefined and force it to get a new objId on buildDocument\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId = undefined;\n var fields = scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields;\n for (var i in fields) {\n if (fields.hasOwnProperty(i)) {\n var formObject = fields[i];\n //set objId to undefined and force it to get a new objId on buildDocument\n formObject.objId = undefined;\n // add Annot Reference!\n if (formObject.hasAnnotation) {\n // If theres an Annotation Widget in the Form Object, put the\n // Reference in the /Annot array\n createAnnotationReference(formObject, scope);\n }\n }\n }\n};\n\nvar putForm = function(formObject) {\n if (formObject.scope.internal.acroformPlugin.printedOut) {\n formObject.scope.internal.acroformPlugin.printedOut = false;\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot = null;\n }\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(\n formObject\n );\n};\n/**\n * Create the Reference to the widgetAnnotation, so that it gets referenced\n * in the Annot[] int the+ (Requires the Annotation Plugin)\n */\nvar createAnnotationReference = function(object, scope) {\n var options = {\n type: \"reference\",\n object: object\n };\n var findEntry = function(entry) {\n return entry.type === options.type && entry.object === options.object;\n };\n if (\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.find(findEntry) === undefined\n ) {\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.push(options);\n }\n};\n\n// Callbacks\n\nvar putCatalogCallback = function(scope) {\n // Put reference to AcroForm to DocumentCatalog\n if (\n typeof scope.internal.acroformPlugin.acroFormDictionaryRoot !== \"undefined\"\n ) {\n // for safety, shouldn't normally be the case\n scope.internal.write(\n \"/AcroForm \" +\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId +\n \" \" +\n 0 +\n \" R\"\n );\n } else {\n throw new Error(\"putCatalogCallback: Root missing.\");\n }\n};\n\n/**\n * Adds /Acroform X 0 R to Document Catalog, and creates the AcroForm\n * Dictionary\n */\nvar AcroFormDictionaryCallback = function(scope) {\n // Remove event\n scope.internal.events.unsubscribe(\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID\n );\n delete scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID;\n scope.internal.acroformPlugin.printedOut = true;\n};\n\n/**\n * Creates the single Fields and writes them into the Document\n *\n * If fieldArray is set, use the fields that are inside it instead of the\n * fields from the AcroRoot (for the FormXObjects...)\n */\nvar createFieldCallback = function(fieldArray, scope) {\n var standardFields = !fieldArray;\n\n if (!fieldArray) {\n // in case there is no fieldArray specified, we want to print out\n // the Fields of the AcroForm\n // Print out Root\n scope.internal.newObjectDeferredBegin(\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId,\n true\n );\n scope.internal.acroformPlugin.acroFormDictionaryRoot.putStream();\n }\n\n fieldArray =\n fieldArray || scope.internal.acroformPlugin.acroFormDictionaryRoot.Kids;\n\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var fieldObject = fieldArray[i];\n var keyValueList = [];\n var oldRect = fieldObject.Rect;\n\n if (fieldObject.Rect) {\n fieldObject.Rect = calculateCoordinates(fieldObject.Rect, scope);\n }\n\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n fieldObject.DA = AcroFormAppearance.createDefaultAppearanceStream(\n fieldObject\n );\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.getKeyValueListForStream === \"function\"\n ) {\n keyValueList = fieldObject.getKeyValueListForStream();\n }\n\n fieldObject.Rect = oldRect;\n\n if (\n fieldObject.hasAppearanceStream &&\n !fieldObject.appearanceStreamContent\n ) {\n // Calculate Appearance\n var appearance = calculateAppearanceStream(fieldObject);\n keyValueList.push({ key: \"AP\", value: \"<>\" });\n\n scope.internal.acroformPlugin.xForms.push(appearance);\n }\n\n // Assume AppearanceStreamContent is a Array with N,R,D (at least\n // one of them!)\n if (fieldObject.appearanceStreamContent) {\n var appearanceStreamString = \"\";\n // Iterate over N,R and D\n for (var k in fieldObject.appearanceStreamContent) {\n if (fieldObject.appearanceStreamContent.hasOwnProperty(k)) {\n var value = fieldObject.appearanceStreamContent[k];\n appearanceStreamString += \"/\" + k + \" \";\n appearanceStreamString += \"<<\";\n if (Object.keys(value).length >= 1 || Array.isArray(value)) {\n // appearanceStream is an Array or Object!\n for (var i in value) {\n if (value.hasOwnProperty(i)) {\n var obj = value[i];\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order\n // to get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj + \" \";\n\n // In case the XForm is already used, e.g. OffState\n // of CheckBoxes, don't add it\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n }\n } else {\n obj = value;\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order to\n // get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj;\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n appearanceStreamString += \">>\";\n }\n }\n\n // appearance stream is a normal Object..\n keyValueList.push({\n key: \"AP\",\n value: \"<<\\n\" + appearanceStreamString + \">>\"\n });\n }\n\n scope.internal.putStream({\n additionalKeyValues: keyValueList,\n objectId: fieldObject.objId\n });\n\n scope.internal.out(\"endobj\");\n }\n }\n if (standardFields) {\n createXFormObjectCallback(scope.internal.acroformPlugin.xForms, scope);\n }\n};\n\nvar createXFormObjectCallback = function(fieldArray, scope) {\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var key = i;\n var fieldObject = fieldArray[i];\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.putStream === \"function\"\n ) {\n fieldObject.putStream();\n }\n delete fieldArray[key];\n }\n }\n};\n\nvar initializeAcroForm = function(scope, formObject) {\n formObject.scope = scope;\n if (\n scope.internal !== undefined &&\n (scope.internal.acroformPlugin === undefined ||\n scope.internal.acroformPlugin.isInitialized === false)\n ) {\n AcroFormField.FieldNum = 0;\n scope.internal.acroformPlugin = JSON.parse(\n JSON.stringify(acroformPluginTemplate)\n );\n if (scope.internal.acroformPlugin.acroFormDictionaryRoot) {\n throw new Error(\"Exception while creating AcroformDictionary\");\n }\n scaleFactor = scope.internal.scaleFactor;\n // The Object Number of the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot = new AcroFormDictionary();\n scope.internal.acroformPlugin.acroFormDictionaryRoot.scope = scope;\n\n // add Callback for creating the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID = scope.internal.events.subscribe(\n \"postPutResources\",\n function() {\n AcroFormDictionaryCallback(scope);\n }\n );\n\n scope.internal.events.subscribe(\"buildDocument\", function() {\n annotReferenceCallback(scope);\n }); // buildDocument\n\n // Register event, that is triggered when the DocumentCatalog is\n // written, in order to add /AcroForm\n\n scope.internal.events.subscribe(\"putCatalog\", function() {\n putCatalogCallback(scope);\n });\n\n // Register event, that creates all Fields\n scope.internal.events.subscribe(\"postPutPages\", function(fieldArray) {\n createFieldCallback(fieldArray, scope);\n });\n\n scope.internal.acroformPlugin.isInitialized = true;\n }\n};\n\n//PDF 32000-1:2008, page 26, 7.3.6\nvar arrayToPdfArray = (jsPDFAPI.__acroform__.arrayToPdfArray = function(\n array,\n objId,\n scope\n) {\n var encryptor = function(data) {\n return data;\n };\n if (Array.isArray(array)) {\n var content = \"[\";\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n content += \" \";\n }\n switch (typeof array[i]) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n content += array[i].toString();\n break;\n case \"string\":\n if (array[i].substr(0, 1) !== \"/\") {\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n content += \"(\" + pdfEscape(encryptor(array[i].toString())) + \")\";\n } else {\n content += array[i].toString();\n }\n break;\n }\n }\n content += \"]\";\n return content;\n }\n throw new Error(\n \"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\"\n );\n});\nfunction getMatches(string, regex, index) {\n index || (index = 1); // default to the first capturing group\n var matches = [];\n var match;\n while ((match = regex.exec(string))) {\n matches.push(match[index]);\n }\n return matches;\n}\nvar pdfArrayToStringArray = function(array) {\n var result = [];\n if (typeof array === \"string\") {\n result = getMatches(array, /\\((.*?)\\)/g);\n }\n return result;\n};\n\nvar toPdfString = function(string, objId, scope) {\n var encryptor = function(data) {\n return data;\n };\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n string = string || \"\";\n string.toString();\n string = \"(\" + pdfEscape(encryptor(string)) + \")\";\n return string;\n};\n\n// ##########################\n// Classes\n// ##########################\n\n/**\n * @class AcroFormPDFObject\n * @classdesc A AcroFormPDFObject\n */\nvar AcroFormPDFObject = function() {\n this._objId = undefined;\n this._scope = undefined;\n\n /**\n * @name AcroFormPDFObject#objId\n * @type {any}\n */\n Object.defineProperty(this, \"objId\", {\n get: function() {\n if (typeof this._objId === \"undefined\") {\n if (typeof this.scope === \"undefined\") {\n return undefined;\n }\n this._objId = this.scope.internal.newObjectDeferred();\n }\n return this._objId;\n },\n set: function(value) {\n this._objId = value;\n }\n });\n Object.defineProperty(this, \"scope\", {\n value: this._scope,\n writable: true\n });\n};\n\n/**\n * @function AcroFormPDFObject.toString\n */\nAcroFormPDFObject.prototype.toString = function() {\n return this.objId + \" 0 R\";\n};\n\nAcroFormPDFObject.prototype.putStream = function() {\n var keyValueList = this.getKeyValueListForStream();\n this.scope.internal.putStream({\n data: this.stream,\n additionalKeyValues: keyValueList,\n objectId: this.objId\n });\n this.scope.internal.out(\"endobj\");\n};\n\n/**\n * Returns an key-value-List of all non-configurable Variables from the Object\n *\n * @name getKeyValueListForStream\n * @returns {string}\n */\nAcroFormPDFObject.prototype.getKeyValueListForStream = function() {\n var keyValueList = [];\n var keys = Object.getOwnPropertyNames(this).filter(function(key) {\n return (\n key != \"content\" &&\n key != \"appearanceStreamContent\" &&\n key != \"scope\" &&\n key != \"objId\" &&\n key.substring(0, 1) != \"_\"\n );\n });\n\n for (var i in keys) {\n if (Object.getOwnPropertyDescriptor(this, keys[i]).configurable === false) {\n var key = keys[i];\n var value = this[key];\n\n if (value) {\n if (Array.isArray(value)) {\n keyValueList.push({\n key: key,\n value: arrayToPdfArray(value, this.objId, this.scope)\n });\n } else if (value instanceof AcroFormPDFObject) {\n // In case it is a reference to another PDFObject,\n // take the reference number\n value.scope = this.scope;\n keyValueList.push({ key: key, value: value.objId + \" 0 R\" });\n } else if (typeof value !== \"function\") {\n keyValueList.push({ key: key, value: value });\n }\n }\n }\n }\n return keyValueList;\n};\n\nvar AcroFormXObject = function() {\n AcroFormPDFObject.call(this);\n\n Object.defineProperty(this, \"Type\", {\n value: \"/XObject\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"Subtype\", {\n value: \"/Form\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"FormType\", {\n value: 1,\n configurable: false,\n writable: true\n });\n\n var _BBox = [];\n Object.defineProperty(this, \"BBox\", {\n configurable: false,\n get: function() {\n return _BBox;\n },\n set: function(value) {\n _BBox = value;\n }\n });\n\n Object.defineProperty(this, \"Resources\", {\n value: \"2 0 R\",\n configurable: false,\n writable: true\n });\n\n var _stream;\n Object.defineProperty(this, \"stream\", {\n enumerable: false,\n configurable: true,\n set: function(value) {\n _stream = value.trim();\n },\n get: function() {\n if (_stream) {\n return _stream;\n } else {\n return null;\n }\n }\n });\n};\n\ninherit(AcroFormXObject, AcroFormPDFObject);\n\nvar AcroFormDictionary = function() {\n AcroFormPDFObject.call(this);\n\n var _Kids = [];\n\n Object.defineProperty(this, \"Kids\", {\n enumerable: false,\n configurable: true,\n get: function() {\n if (_Kids.length > 0) {\n return _Kids;\n } else {\n return undefined;\n }\n }\n });\n Object.defineProperty(this, \"Fields\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Kids;\n }\n });\n\n // Default Appearance\n var _DA;\n Object.defineProperty(this, \"DA\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DA) {\n return undefined;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_DA)) + \")\";\n },\n set: function(value) {\n _DA = value;\n }\n });\n};\n\ninherit(AcroFormDictionary, AcroFormPDFObject);\n\n/**\n * The Field Object contains the Variables, that every Field needs\n *\n * @class AcroFormField\n * @classdesc An AcroForm FieldObject\n */\nvar AcroFormField = function() {\n AcroFormPDFObject.call(this);\n\n //Annotation-Flag See Table 165\n var _F = 4;\n Object.defineProperty(this, \"F\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _F;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _F = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute F supplied.'\n );\n }\n }\n });\n\n /**\n * (PDF 1.2) If set, print the annotation when the page is printed. If clear, never print the annotation, regardless of wether is is displayed on the screen.\n * NOTE 2 This can be useful for annotations representing interactive pushbuttons, which would serve no meaningful purpose on the printed page.\n *\n * @name AcroFormField#showWhenPrinted\n * @default true\n * @type {boolean}\n */\n Object.defineProperty(this, \"showWhenPrinted\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(_F, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.F = setBitForPdf(_F, 3);\n } else {\n this.F = clearBitForPdf(_F, 3);\n }\n }\n });\n\n var _Ff = 0;\n Object.defineProperty(this, \"Ff\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Ff;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _Ff = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Ff supplied.'\n );\n }\n }\n });\n\n var _Rect = [];\n Object.defineProperty(this, \"Rect\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (_Rect.length === 0) {\n return undefined;\n }\n return _Rect;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Rect = value;\n } else {\n _Rect = [];\n }\n }\n });\n\n /**\n * The x-position of the field.\n *\n * @name AcroFormField#x\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[0])) {\n return 0;\n }\n return _Rect[0];\n },\n set: function(value) {\n _Rect[0] = value;\n }\n });\n\n /**\n * The y-position of the field.\n *\n * @name AcroFormField#y\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[1])) {\n return 0;\n }\n return _Rect[1];\n },\n set: function(value) {\n _Rect[1] = value;\n }\n });\n\n /**\n * The width of the field.\n *\n * @name AcroFormField#width\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[2])) {\n return 0;\n }\n return _Rect[2];\n },\n set: function(value) {\n _Rect[2] = value;\n }\n });\n\n /**\n * The height of the field.\n *\n * @name AcroFormField#height\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[3])) {\n return 0;\n }\n return _Rect[3];\n },\n set: function(value) {\n _Rect[3] = value;\n }\n });\n\n var _FT = \"\";\n Object.defineProperty(this, \"FT\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _FT;\n },\n set: function(value) {\n switch (value) {\n case \"/Btn\":\n case \"/Tx\":\n case \"/Ch\":\n case \"/Sig\":\n _FT = value;\n break;\n default:\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute FT supplied.'\n );\n }\n }\n });\n\n var _T = null;\n\n Object.defineProperty(this, \"T\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (!_T || _T.length < 1) {\n // In case of a Child from a Radio´Group, you don't need a FieldName\n if (this instanceof AcroFormChildClass) {\n return undefined;\n }\n _T = \"FieldObject\" + AcroFormField.FieldNum++;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_T)) + \")\";\n },\n set: function(value) {\n _T = value.toString();\n }\n });\n\n /**\n * (Optional) The partial field name (see 12.7.3.2, “Field Names”).\n *\n * @name AcroFormField#fieldName\n * @default null\n * @type {string}\n */\n Object.defineProperty(this, \"fieldName\", {\n configurable: true,\n enumerable: true,\n get: function() {\n return _T;\n },\n set: function(value) {\n _T = value;\n }\n });\n\n var _fontName = \"helvetica\";\n /**\n * The fontName of the font to be used.\n *\n * @name AcroFormField#fontName\n * @default 'helvetica'\n * @type {string}\n */\n Object.defineProperty(this, \"fontName\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontName;\n },\n set: function(value) {\n _fontName = value;\n }\n });\n\n var _fontStyle = \"normal\";\n /**\n * The fontStyle of the font to be used.\n *\n * @name AcroFormField#fontStyle\n * @default 'normal'\n * @type {string}\n */\n Object.defineProperty(this, \"fontStyle\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontStyle;\n },\n set: function(value) {\n _fontStyle = value;\n }\n });\n\n var _fontSize = 0;\n /**\n * The fontSize of the font to be used.\n *\n * @name AcroFormField#fontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"fontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontSize;\n },\n set: function(value) {\n _fontSize = value;\n }\n });\n\n var _maxFontSize = undefined;\n /**\n * The maximum fontSize of the font to be used.\n *\n * @name AcroFormField#maxFontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"maxFontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (_maxFontSize === undefined) {\n // use the old default value here - the value is some kind of random as it depends on the scaleFactor (user unit)\n // (\"50\" is transformed to the \"user space\" but then used in \"pdf space\")\n return 50 / scaleFactor;\n } else {\n return _maxFontSize;\n }\n },\n set: function(value) {\n _maxFontSize = value;\n }\n });\n\n var _color = \"black\";\n /**\n * The color of the text\n *\n * @name AcroFormField#color\n * @default 'black'\n * @type {string|rgba}\n */\n Object.defineProperty(this, \"color\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _color;\n },\n set: function(value) {\n _color = value;\n }\n });\n\n var _DA = \"/F1 0 Tf 0 g\";\n // Defines the default appearance (Needed for variable Text)\n Object.defineProperty(this, \"DA\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (\n !_DA ||\n this instanceof AcroFormChildClass ||\n this instanceof AcroFormTextField\n ) {\n return undefined;\n }\n return toPdfString(_DA, this.objId, this.scope);\n },\n set: function(value) {\n value = value.toString();\n _DA = value;\n }\n });\n\n var _DV = null;\n Object.defineProperty(this, \"DV\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DV) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_DV, this.objId, this.scope);\n }\n return _DV;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _DV = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _DV = pdfUnescape(value);\n }\n } else {\n _DV = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The default value to which the field reverts when a reset-form action is executed (see 12.7.5.3, “Reset-Form Action”). The format of this value is the same as that of value.\n *\n * @name AcroFormField#defaultValue\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"defaultValue\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_DV.substr(1, _DV.length - 1));\n } else {\n return _DV;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _DV = \"/\" + value;\n } else {\n _DV = value;\n }\n }\n });\n\n var _V = null;\n Object.defineProperty(this, \"_V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n return _V;\n },\n set: function(value) {\n this.V = value;\n }\n });\n Object.defineProperty(this, \"V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_V, this.objId, this.scope);\n }\n return _V;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _V = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _V = pdfUnescape(value);\n }\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The field’s value, whose format varies depending on the field type. See the descriptions of individual field types for further information.\n *\n * @name AcroFormField#value\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_V.substr(1, _V.length - 1));\n } else {\n return _V;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _V = \"/\" + value;\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * Check if field has annotations\n *\n * @name AcroFormField#hasAnnotation\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAnnotation\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.Rect;\n }\n });\n\n Object.defineProperty(this, \"Type\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Annot\" : null;\n }\n });\n\n Object.defineProperty(this, \"Subtype\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Widget\" : null;\n }\n });\n\n var _hasAppearanceStream = false;\n /**\n * true if field has an appearanceStream\n *\n * @name AcroFormField#hasAppearanceStream\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _hasAppearanceStream;\n },\n set: function(value) {\n value = Boolean(value);\n _hasAppearanceStream = value;\n }\n });\n\n /**\n * The page on which the AcroFormField is placed\n *\n * @name AcroFormField#page\n * @type {number}\n */\n var _page;\n Object.defineProperty(this, \"page\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_page) {\n return undefined;\n }\n return _page;\n },\n set: function(value) {\n _page = value;\n }\n });\n\n /**\n * If set, the user may not change the value of the field. Any associated widget annotations will not interact with the user; that is, they will not respond to mouse clicks or change their appearance in response to mouse motions. This flag is useful for fields whose values are computed or imported from a database.\n *\n * @name AcroFormField#readOnly\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"readOnly\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 1));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 1);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 1);\n }\n }\n });\n\n /**\n * If set, the field shall have a value at the time it is exported by a submitform action (see 12.7.5.2, “Submit-Form Action”).\n *\n * @name AcroFormField#required\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"required\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 2));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 2);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 2);\n }\n }\n });\n\n /**\n * If set, the field shall not be exported by a submit-form action (see 12.7.5.2, “Submit-Form Action”)\n *\n * @name AcroFormField#noExport\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"noExport\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 3);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 3);\n }\n }\n });\n\n var _Q = null;\n Object.defineProperty(this, \"Q\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (_Q === null) {\n return undefined;\n }\n return _Q;\n },\n set: function(value) {\n if ([0, 1, 2].indexOf(value) !== -1) {\n _Q = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Q supplied.'\n );\n }\n }\n });\n\n /**\n * (Optional; inheritable) A code specifying the form of quadding (justification) that shall be used in displaying the text:\n * 'left', 'center', 'right'\n *\n * @name AcroFormField#textAlign\n * @default 'left'\n * @type {string}\n */\n Object.defineProperty(this, \"textAlign\", {\n get: function() {\n var result;\n switch (_Q) {\n case 0:\n default:\n result = \"left\";\n break;\n case 1:\n result = \"center\";\n break;\n case 2:\n result = \"right\";\n break;\n }\n return result;\n },\n configurable: true,\n enumerable: true,\n set: function(value) {\n switch (value) {\n case \"right\":\n case 2:\n _Q = 2;\n break;\n case \"center\":\n case 1:\n _Q = 1;\n break;\n case \"left\":\n case 0:\n default:\n _Q = 0;\n }\n }\n });\n};\n\ninherit(AcroFormField, AcroFormPDFObject);\n\n/**\n * @class AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormChoiceField = function() {\n AcroFormField.call(this);\n // Field Type = Choice Field\n this.FT = \"/Ch\";\n // options\n this.V = \"()\";\n\n this.fontName = \"zapfdingbats\";\n // Top Index\n var _TI = 0;\n\n Object.defineProperty(this, \"TI\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n /**\n * (Optional) For scrollable list boxes, the top index (the index in the Opt array of the first option visible in the list). Default value: 0.\n *\n * @name AcroFormChoiceField#topIndex\n * @default 0\n * @type {number}\n */\n Object.defineProperty(this, \"topIndex\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n var _Opt = [];\n Object.defineProperty(this, \"Opt\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return arrayToPdfArray(_Opt, this.objId, this.scope);\n },\n set: function(value) {\n _Opt = pdfArrayToStringArray(value);\n }\n });\n\n /**\n * @memberof AcroFormChoiceField\n * @name getOptions\n * @function\n * @instance\n * @returns {array} array of Options\n */\n this.getOptions = function() {\n return _Opt;\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name setOptions\n * @function\n * @instance\n * @param {array} value\n */\n this.setOptions = function(value) {\n _Opt = value;\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name addOption\n * @function\n * @instance\n * @param {string} value\n */\n this.addOption = function(value) {\n value = value || \"\";\n value = value.toString();\n _Opt.push(value);\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name removeOption\n * @function\n * @instance\n * @param {string} value\n * @param {boolean} allEntries (default: false)\n */\n this.removeOption = function(value, allEntries) {\n allEntries = allEntries || false;\n value = value || \"\";\n value = value.toString();\n\n while (_Opt.indexOf(value) !== -1) {\n _Opt.splice(_Opt.indexOf(value), 1);\n if (allEntries === false) {\n break;\n }\n }\n };\n\n /**\n * If set, the field is a combo box; if clear, the field is a list box.\n *\n * @name AcroFormChoiceField#combo\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"combo\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 18));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 18);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 18);\n }\n }\n });\n\n /**\n * If set, the combo box shall include an editable text box as well as a drop-down list; if clear, it shall include only a drop-down list. This flag shall be used only if the Combo flag is set.\n *\n * @name AcroFormChoiceField#edit\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"edit\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 19));\n },\n set: function(value) {\n //PDF 32000-1:2008, page 444\n if (this.combo === true) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 19);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 19);\n }\n }\n }\n });\n\n /**\n * If set, the field’s option items shall be sorted alphabetically. This flag is intended for use by writers, not by readers. Conforming readers shall display the options in the order in which they occur in the Opt array (see Table 231).\n *\n * @name AcroFormChoiceField#sort\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"sort\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 20));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 20);\n _Opt.sort();\n } else {\n this.Ff = clearBitForPdf(this.Ff, 20);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, more than one of the field’s option items may be selected simultaneously; if clear, at most one item shall be selected\n *\n * @name AcroFormChoiceField#multiSelect\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 22));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 22);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 22);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spellchecked. This flag shall not be used unless the Combo and Edit flags are both set.\n *\n * @name AcroFormChoiceField#doNotSpellCheck\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the new value shall be committed as soon as a selection is made (commonly with the pointing device). In this case, supplying a value for a field involves three actions: selecting the field for fill-in, selecting a choice for the fill-in value, and leaving that field, which finalizes or “commits” the data choice and triggers any actions associated with the entry or changing of this data. If this flag is on, then processing does not wait for leaving the field action to occur, but immediately proceeds to the third step.\n * This option enables applications to perform an action once a selection is made, without requiring the user to exit the field. If clear, the new value is not committed until the user exits the field.\n *\n * @name AcroFormChoiceField#commitOnSelChange\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"commitOnSelChange\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 27));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 27);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 27);\n }\n }\n });\n\n this.hasAppearanceStream = false;\n};\ninherit(AcroFormChoiceField, AcroFormField);\n\n/**\n * @class AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormListBox = function() {\n AcroFormChoiceField.call(this);\n this.fontName = \"helvetica\";\n\n //PDF 32000-1:2008, page 444\n this.combo = false;\n};\ninherit(AcroFormListBox, AcroFormChoiceField);\n\n/**\n * @class AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormComboBox = function() {\n AcroFormListBox.call(this);\n this.combo = true;\n};\ninherit(AcroFormComboBox, AcroFormListBox);\n\n/**\n * @class AcroFormEditBox\n * @extends AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormEditBox = function() {\n AcroFormComboBox.call(this);\n this.edit = true;\n};\ninherit(AcroFormEditBox, AcroFormComboBox);\n\n/**\n * @class AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormButton = function() {\n AcroFormField.call(this);\n this.FT = \"/Btn\";\n\n /**\n * (Radio buttons only) If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. If clear, clicking the selected button deselects it, leaving no button selected.\n *\n * @name AcroFormButton#noToggleToOff\n * @type {boolean}\n */\n Object.defineProperty(this, \"noToggleToOff\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 15));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 15);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 15);\n }\n }\n });\n\n /**\n * If set, the field is a set of radio buttons; if clear, the field is a checkbox. This flag may be set only if the Pushbutton flag is clear.\n *\n * @name AcroFormButton#radio\n * @type {boolean}\n */\n Object.defineProperty(this, \"radio\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 16));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 16);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 16);\n }\n }\n });\n\n /**\n * If set, the field is a pushbutton that does not retain a permanent value.\n *\n * @name AcroFormButton#pushButton\n * @type {boolean}\n */\n Object.defineProperty(this, \"pushButton\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 17));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 17);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 17);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, a group of radio buttons within a radio button field that use the same value for the on state will turn on and off in unison; that is if one is checked, they are all checked. If clear, the buttons are mutually exclusive (the same behavior as HTML radio buttons).\n *\n * @name AcroFormButton#radioIsUnison\n * @type {boolean}\n */\n Object.defineProperty(this, \"radioIsUnison\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n if (Object.keys(_MK).length !== 0) {\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n }\n return undefined;\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n};\ninherit(AcroFormButton, AcroFormField);\n\n/**\n * @class AcroFormPushButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormPushButton = function() {\n AcroFormButton.call(this);\n this.pushButton = true;\n};\ninherit(AcroFormPushButton, AcroFormButton);\n\n/**\n * @class AcroFormRadioButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormRadioButton = function() {\n AcroFormButton.call(this);\n this.radio = true;\n this.pushButton = false;\n\n var _Kids = [];\n Object.defineProperty(this, \"Kids\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _Kids;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Kids = value;\n } else {\n _Kids = [];\n }\n }\n });\n};\ninherit(AcroFormRadioButton, AcroFormButton);\n\n/**\n * The Child class of a RadioButton (the radioGroup) -> The single Buttons\n *\n * @class AcroFormChildClass\n * @extends AcroFormField\n * @ignore\n */\nvar AcroFormChildClass = function() {\n AcroFormField.call(this);\n\n var _parent;\n Object.defineProperty(this, \"Parent\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _parent;\n },\n set: function(value) {\n _parent = value;\n }\n });\n\n var _optionName;\n Object.defineProperty(this, \"optionName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return _optionName;\n },\n set: function(value) {\n _optionName = value;\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n this.caption = \"l\";\n this.appearanceState = \"Off\";\n // todo: set AppearanceType as variable that can be set from the\n // outside...\n this._AppearanceType = AcroFormAppearance.RadioButton.Circle;\n // The Default appearanceType is the Circle\n this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(\n this.optionName\n );\n};\ninherit(AcroFormChildClass, AcroFormField);\n\nAcroFormRadioButton.prototype.setAppearance = function(appearance) {\n if (!(\"createAppearanceStream\" in appearance && \"getCA\" in appearance)) {\n throw new Error(\n \"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\"\n );\n }\n for (var objId in this.Kids) {\n if (this.Kids.hasOwnProperty(objId)) {\n var child = this.Kids[objId];\n child.appearanceStreamContent = appearance.createAppearanceStream(\n child.optionName\n );\n child.caption = appearance.getCA();\n }\n }\n};\n\nAcroFormRadioButton.prototype.createOption = function(name) {\n // Create new Child for RadioGroup\n var child = new AcroFormChildClass();\n child.Parent = this;\n child.optionName = name;\n // Add to Parent\n this.Kids.push(child);\n\n addField.call(this.scope, child);\n\n return child;\n};\n\n/**\n * @class AcroFormCheckBox\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormCheckBox = function() {\n AcroFormButton.call(this);\n\n this.fontName = \"zapfdingbats\";\n this.caption = \"3\";\n this.appearanceState = \"On\";\n this.value = \"On\";\n this.textAlign = \"center\";\n this.appearanceStreamContent = AcroFormAppearance.CheckBox.createAppearanceStream();\n};\ninherit(AcroFormCheckBox, AcroFormButton);\n\n/**\n * @class AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormTextField = function() {\n AcroFormField.call(this);\n this.FT = \"/Tx\";\n\n /**\n * If set, the field may contain multiple lines of text; if clear, the field’s text shall be restricted to a single line.\n *\n * @name AcroFormTextField#multiline\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiline\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 13));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 13);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 13);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the text entered in the field represents the pathname of a file whose contents shall be submitted as the value of the field.\n *\n * @name AcroFormTextField#fileSelect\n * @type {boolean}\n */\n Object.defineProperty(this, \"fileSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 21));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 21);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 21);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spell-checked.\n *\n * @name AcroFormTextField#doNotSpellCheck\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the field shall not scroll (horizontally for single-line fields, vertically for multiple-line fields) to accommodate more text than fits within its annotation rectangle. Once the field is full, no further text shall be accepted for interactive form filling; for noninteractive form filling, the filler should take care not to add more character than will visibly fit in the defined area.\n *\n * @name AcroFormTextField#doNotScroll\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotScroll\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 24));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 24);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 24);\n }\n }\n });\n\n /**\n * (PDF 1.5) May be set only if the MaxLen entry is present in the text field dictionary (see Table 229) and if the Multiline, Password, and FileSelect flags are clear. If set, the field shall be automatically divided into as many equally spaced positions, or combs, as the value of MaxLen, and the text is laid out into those combs.\n *\n * @name AcroFormTextField#comb\n * @type {boolean}\n */\n Object.defineProperty(this, \"comb\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 25));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 25);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 25);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the value of this field shall be a rich text string (see 12.7.3.4, “Rich Text Strings”). If the field has a value, the RV entry of the field dictionary (Table 222) shall specify the rich text string.\n *\n * @name AcroFormTextField#richText\n * @type {boolean}\n */\n Object.defineProperty(this, \"richText\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MaxLen = null;\n Object.defineProperty(this, \"MaxLen\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n _MaxLen = value;\n }\n });\n\n /**\n * (Optional; inheritable) The maximum length of the field’s text, in characters.\n *\n * @name AcroFormTextField#maxLength\n * @type {number}\n */\n Object.defineProperty(this, \"maxLength\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n if (Number.isInteger(value)) {\n _MaxLen = value;\n }\n }\n });\n\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.V || this.DV;\n }\n });\n};\ninherit(AcroFormTextField, AcroFormField);\n\n/**\n * @class AcroFormPasswordField\n * @extends AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormPasswordField = function() {\n AcroFormTextField.call(this);\n\n /**\n * If set, the field is intended for entering a secure password that should not be echoed visibly to the screen. Characters typed from the keyboard shall instead be echoed in some unreadable form, such as asterisks or bullet characters.\n * NOTE To protect password confidentiality, readers should never store the value of the text field in the PDF file if this flag is set.\n *\n * @name AcroFormTextField#password\n * @type {boolean}\n */\n Object.defineProperty(this, \"password\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 14));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 14);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 14);\n }\n }\n });\n this.password = true;\n};\ninherit(AcroFormPasswordField, AcroFormTextField);\n\n// Contains Methods for creating standard appearances\nvar AcroFormAppearance = {\n CheckBox: {\n createAppearanceStream: function() {\n var appearance = {\n N: {\n On: AcroFormAppearance.CheckBox.YesNormal\n },\n D: {\n On: AcroFormAppearance.CheckBox.YesPushDown,\n Off: AcroFormAppearance.CheckBox.OffPushDown\n }\n };\n\n return appearance;\n },\n /**\n * Returns the standard On Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"BMC\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(\"BT\");\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n stream.push(\"EMC\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var stream = [];\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"1 g\");\n stream.push(\"0 0 \" + f2(width) + \" \" + f2(height) + \" re\");\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\"0 0 \" + f2(width - 1) + \" \" + f2(height - 1) + \" re\");\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(\"0 g\");\n stream.push(\"BT\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n /**\n * Returns the standard Off Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n RadioButton: {\n Circle: {\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Circle.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Circle.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Circle.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"l\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n // Make the Radius of the Circle relative to min(height, width) of formObject\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n var c = AcroFormAppearance.internal.Bezier_C;\n var DotRadiusBezier = Number((DotRadius * c).toFixed(5));\n /*\n * The Following is a Circle created with Bezier-Curves.\n */\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n var dc = Number(\n (DotRadius * AcroFormAppearance.internal.Bezier_C).toFixed(5)\n );\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n stream.push(\"0 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n \"\" +\n DotRadius +\n \" \" +\n dc +\n \" \" +\n dc +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n dc +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n dc +\n \" -\" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n dc +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n dc +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n Cross: {\n /**\n * Creates the Actual AppearanceDictionary-References\n *\n * @param {string} name\n * @returns {Object}\n * @ignore\n */\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Cross.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Cross.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Cross.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"8\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n }\n },\n\n /**\n * Returns the standard Appearance\n *\n * @returns {AcroFormXObject}\n */\n createDefaultAppearanceStream: function(formObject) {\n // Set Helvetica to Standard Font (size: auto)\n // Color: Black\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var fontSize = formObject.fontSize;\n var result = \"/\" + fontKey + \" \" + fontSize + \" Tf \" + encodedColor;\n return result;\n }\n};\n\nAcroFormAppearance.internal = {\n Bezier_C: 0.551915024494,\n\n calculateCross: function(formObject) {\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var a = Math.min(width, height);\n\n var cross = {\n x1: {\n // upperLeft\n x: (width - a) / 2,\n y: (height - a) / 2 + a // height - borderPadding\n },\n x2: {\n // lowerRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 // borderPadding\n },\n x3: {\n // lowerLeft\n x: (width - a) / 2,\n y: (height - a) / 2 // borderPadding\n },\n x4: {\n // upperRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 + a // height - borderPadding\n }\n };\n\n return cross;\n }\n};\nAcroFormAppearance.internal.getWidth = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[2]);\n }\n return result;\n};\nAcroFormAppearance.internal.getHeight = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[3]);\n }\n return result;\n};\n\n// Public:\n\n/**\n * Add an AcroForm-Field to the jsPDF-instance\n *\n * @name addField\n * @function\n * @instance\n * @param {Object} fieldObject\n * @returns {jsPDF}\n */\nvar addField = (jsPDFAPI.addField = function(fieldObject) {\n initializeAcroForm(this, fieldObject);\n\n if (fieldObject instanceof AcroFormField) {\n putForm(fieldObject);\n } else {\n throw new Error(\"Invalid argument passed to jsPDF.addField.\");\n }\n fieldObject.page = fieldObject.scope.internal.getCurrentPageInfo().pageNumber;\n return this;\n});\n\njsPDFAPI.AcroFormChoiceField = AcroFormChoiceField;\njsPDFAPI.AcroFormListBox = AcroFormListBox;\njsPDFAPI.AcroFormComboBox = AcroFormComboBox;\njsPDFAPI.AcroFormEditBox = AcroFormEditBox;\njsPDFAPI.AcroFormButton = AcroFormButton;\njsPDFAPI.AcroFormPushButton = AcroFormPushButton;\njsPDFAPI.AcroFormRadioButton = AcroFormRadioButton;\njsPDFAPI.AcroFormCheckBox = AcroFormCheckBox;\njsPDFAPI.AcroFormTextField = AcroFormTextField;\njsPDFAPI.AcroFormPasswordField = AcroFormPasswordField;\njsPDFAPI.AcroFormAppearance = AcroFormAppearance;\n\njsPDFAPI.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\njsPDF.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\nvar AcroForm = jsPDF.AcroForm;\n\nexport {\n AcroForm,\n AcroFormChoiceField,\n AcroFormListBox,\n AcroFormComboBox,\n AcroFormEditBox,\n AcroFormButton,\n AcroFormPushButton,\n AcroFormRadioButton,\n AcroFormCheckBox,\n AcroFormTextField,\n AcroFormPasswordField,\n AcroFormAppearance\n};\n","function toLookup(arr) {\n return arr.reduce(function(lookup, name, index) {\n lookup[name] = index;\n\n return lookup;\n }, {});\n}\n\nvar fontStyleOrder = {\n italic: [\"italic\", \"oblique\", \"normal\"],\n oblique: [\"oblique\", \"italic\", \"normal\"],\n normal: [\"normal\", \"oblique\", \"italic\"]\n};\n\nvar fontStretchOrder = [\n \"ultra-condensed\",\n \"extra-condensed\",\n \"condensed\",\n \"semi-condensed\",\n \"normal\",\n \"semi-expanded\",\n \"expanded\",\n \"extra-expanded\",\n \"ultra-expanded\"\n];\n\n// For a given font-stretch value, we need to know where to start our search\n// from in the fontStretchOrder list.\nvar fontStretchLookup = toLookup(fontStretchOrder);\n\nvar fontWeights = [100, 200, 300, 400, 500, 600, 700, 800, 900];\nvar fontWeightsLookup = toLookup(fontWeights);\n\nfunction normalizeFontStretch(stretch) {\n stretch = stretch || \"normal\";\n\n return typeof fontStretchLookup[stretch] === \"number\" ? stretch : \"normal\";\n}\n\nfunction normalizeFontStyle(style) {\n style = style || \"normal\";\n\n return fontStyleOrder[style] ? style : \"normal\";\n}\n\nfunction normalizeFontWeight(weight) {\n if (!weight) {\n return 400;\n }\n\n if (typeof weight === \"number\") {\n // Ignore values which aren't valid font-weights.\n return weight >= 100 && weight <= 900 && weight % 100 === 0 ? weight : 400;\n }\n\n if (/^\\d00$/.test(weight)) {\n return parseInt(weight);\n }\n\n switch (weight) {\n case \"bold\":\n return 700;\n\n case \"normal\":\n default:\n return 400;\n }\n}\n\nexport function normalizeFontFace(fontFace) {\n var family = fontFace.family.replace(/\"|'/g, \"\").toLowerCase();\n\n var style = normalizeFontStyle(fontFace.style);\n var weight = normalizeFontWeight(fontFace.weight);\n var stretch = normalizeFontStretch(fontFace.stretch);\n\n return {\n family: family,\n style: style,\n weight: weight,\n stretch: stretch,\n src: fontFace.src || [],\n\n // The ref property maps this font-face to the font\n // added by the .addFont() method.\n ref: fontFace.ref || {\n name: family,\n style: [stretch, style, weight].join(\" \")\n }\n };\n}\n\n/**\n * Turns a list of font-faces into a map, for easier lookup when resolving\n * fonts.\n * @private\n */\nexport function buildFontFaceMap(fontFaces) {\n var map = {};\n\n for (var i = 0; i < fontFaces.length; ++i) {\n var normalized = normalizeFontFace(fontFaces[i]);\n\n var name = normalized.family;\n var stretch = normalized.stretch;\n var style = normalized.style;\n var weight = normalized.weight;\n\n map[name] = map[name] || {};\n\n map[name][stretch] = map[name][stretch] || {};\n map[name][stretch][style] = map[name][stretch][style] || {};\n map[name][stretch][style][weight] = normalized;\n }\n\n return map;\n}\n\n/**\n * Searches a map of stretches, weights, etc. in the given direction and\n * then, if no match has been found, in the opposite directions.\n *\n * @param {Object.} matchingSet A map of the various font variations.\n * @param {any[]} order The order of the different variations\n * @param {number} pivot The starting point of the search in the order list.\n * @param {number} dir The initial direction of the search (desc = -1, asc = 1)\n * @private\n */\n\nfunction searchFromPivot(matchingSet, order, pivot, dir) {\n var i;\n\n for (i = pivot; i >= 0 && i < order.length; i += dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n\n for (i = pivot; i >= 0 && i < order.length; i -= dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n}\n\nfunction resolveFontStretch(stretch, matchingSet) {\n if (matchingSet[stretch]) {\n return matchingSet[stretch];\n }\n\n var pivot = fontStretchLookup[stretch];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = pivot <= fontStretchLookup[\"normal\"] ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontStretchOrder, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-stretch value for \" + stretch\n );\n }\n\n return match;\n}\n\nfunction resolveFontStyle(fontStyle, matchingSet) {\n if (matchingSet[fontStyle]) {\n return matchingSet[fontStyle];\n }\n\n var ordering = fontStyleOrder[fontStyle];\n\n for (var i = 0; i < ordering.length; ++i) {\n if (matchingSet[ordering[i]]) {\n return matchingSet[ordering[i]];\n }\n }\n\n // Since a font-family cannot exist without having at least one style value\n // we should never reach this point.\n throw new Error(\"Could not find a matching font-style for \" + fontStyle);\n}\n\nfunction resolveFontWeight(weight, matchingSet) {\n if (matchingSet[weight]) {\n return matchingSet[weight];\n }\n\n if (weight === 400 && matchingSet[500]) {\n return matchingSet[500];\n }\n\n if (weight === 500 && matchingSet[400]) {\n return matchingSet[400];\n }\n\n var pivot = fontWeightsLookup[weight];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = weight < 400 ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontWeights, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-weight for value \" + weight\n );\n }\n\n return match;\n}\n\nvar defaultGenericFontFamilies = {\n \"sans-serif\": \"helvetica\",\n fixed: \"courier\",\n monospace: \"courier\",\n terminal: \"courier\",\n cursive: \"times\",\n fantasy: \"times\",\n serif: \"times\"\n};\n\nvar systemFonts = {\n caption: \"times\",\n icon: \"times\",\n menu: \"times\",\n \"message-box\": \"times\",\n \"small-caption\": \"times\",\n \"status-bar\": \"times\"\n};\n\nfunction ruleToString(rule) {\n return [rule.stretch, rule.style, rule.weight, rule.family].join(\" \");\n}\n\nexport function resolveFontFace(fontFaceMap, rules, opts) {\n opts = opts || {};\n\n var defaultFontFamily = opts.defaultFontFamily || \"times\";\n var genericFontFamilies = Object.assign(\n {},\n defaultGenericFontFamilies,\n opts.genericFontFamilies || {}\n );\n\n var rule = null;\n var matches = null;\n\n for (var i = 0; i < rules.length; ++i) {\n rule = normalizeFontFace(rules[i]);\n\n if (genericFontFamilies[rule.family]) {\n rule.family = genericFontFamilies[rule.family];\n }\n\n if (fontFaceMap.hasOwnProperty(rule.family)) {\n matches = fontFaceMap[rule.family];\n\n break;\n }\n }\n\n // Always fallback to a known font family.\n matches = matches || fontFaceMap[defaultFontFamily];\n\n if (!matches) {\n // At this point we should definitiely have a font family, but if we\n // don't there is something wrong with our configuration\n throw new Error(\n \"Could not find a font-family for the rule '\" +\n ruleToString(rule) +\n \"' and default family '\" +\n defaultFontFamily +\n \"'.\"\n );\n }\n\n matches = resolveFontStretch(rule.stretch, matches);\n matches = resolveFontStyle(rule.style, matches);\n matches = resolveFontWeight(rule.weight, matches);\n\n if (!matches) {\n // We should've fount\n throw new Error(\n \"Failed to resolve a font for the rule '\" + ruleToString(rule) + \"'.\"\n );\n }\n\n return matches;\n}\n\n/**\n * Builds a style id for use with the addFont() method.\n * @param {FontFace} font\n * @private\n */\nexport function toStyleName(font) {\n return [font.weight, font.style, font.stretch].join(\" \");\n}\n\nfunction eatWhiteSpace(input) {\n return input.trimLeft();\n}\n\nfunction parseQuotedFontFamily(input, quote) {\n var index = 0;\n\n while (index < input.length) {\n var current = input.charAt(index);\n\n if (current === quote) {\n return [input.substring(0, index), input.substring(index + 1)];\n }\n\n index += 1;\n }\n\n // Unexpected end of input\n return null;\n}\n\nfunction parseNonQuotedFontFamily(input) {\n // It implements part of the identifier parser here: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n //\n // NOTE: This parser pretty much ignores escaped identifiers and that there is a thing called unicode.\n //\n // Breakdown of regexp:\n // -[a-z_] - when identifier starts with a hyphen, you're not allowed to have another hyphen or a digit\n // [a-z_] - allow a-z and underscore at beginning of input\n // [a-z0-9_-]* - after that, anything goes\n var match = input.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);\n\n // non quoted value contains illegal characters\n if (match === null) {\n return null;\n }\n\n return [match[0], input.substring(match[0].length)];\n}\n\nvar defaultFont = [\"times\"];\n\nexport function parseFontFamily(input) {\n var result = [];\n var ch, parsed;\n var remaining = input.trim();\n\n if (remaining === \"\") {\n return defaultFont;\n }\n\n if (remaining in systemFonts) {\n return [systemFonts[remaining]];\n }\n\n while (remaining !== \"\") {\n parsed = null;\n remaining = eatWhiteSpace(remaining);\n ch = remaining.charAt(0);\n\n switch (ch) {\n case '\"':\n case \"'\":\n parsed = parseQuotedFontFamily(remaining.substring(1), ch);\n break;\n\n default:\n parsed = parseNonQuotedFontFamily(remaining);\n break;\n }\n\n if (parsed === null) {\n return defaultFont;\n }\n\n result.push(parsed[0]);\n\n remaining = eatWhiteSpace(parsed[1]);\n\n // We expect end of input or a comma separator here\n if (remaining !== \"\" && remaining.charAt(0) !== \",\") {\n return defaultFont;\n }\n\n remaining = remaining.replace(/^,/, \"\");\n }\n\n return result;\n}\n","/** @license\n * jsPDF addImage plugin\n * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/\n * 2013 Chris Dowling, https://github.com/gingerchris\n * 2013 Trinh Ho, https://github.com/ineedfat\n * 2013 Edwin Alejandro Perez, https://github.com/eaparango\n * 2013 Norah Smith, https://github.com/burnburnrocket\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/**\n * @name addImage\n * @module\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob, btoa } from \"../libs/AtobBtoa.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namespace = \"addImage_\";\n jsPDFAPI.__addimage__ = {};\n\n var UNKNOWN = \"UNKNOWN\";\n\n // Heuristic selection of a good batch for large array .apply. Not limiting make the call overflow.\n // With too small batch iteration will be slow as more calls are made,\n // higher values cause larger and slower garbage collection.\n var ARRAY_APPLY_BATCH = 8192;\n\n var imageFileTypeHeaders = {\n PNG: [[0x89, 0x50, 0x4e, 0x47]],\n TIFF: [\n [0x4d, 0x4d, 0x00, 0x2a], //Motorola\n [0x49, 0x49, 0x2a, 0x00] //Intel\n ],\n JPEG: [\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe0,\n undefined,\n undefined,\n 0x4a,\n 0x46,\n 0x49,\n 0x46,\n 0x00\n ], //JFIF\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe1,\n undefined,\n undefined,\n 0x45,\n 0x78,\n 0x69,\n 0x66,\n 0x00,\n 0x00\n ], //Exif\n [0xff, 0xd8, 0xff, 0xdb], //JPEG RAW\n [0xff, 0xd8, 0xff, 0xee] //EXIF RAW\n ],\n JPEG2000: [[0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20]],\n GIF87a: [[0x47, 0x49, 0x46, 0x38, 0x37, 0x61]],\n GIF89a: [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61]],\n WEBP: [\n [\n 0x52,\n 0x49,\n 0x46,\n 0x46,\n undefined,\n undefined,\n undefined,\n undefined,\n 0x57,\n 0x45,\n 0x42,\n 0x50\n ]\n ],\n BMP: [\n [0x42, 0x4d], //BM - Windows 3.1x, 95, NT, ... etc.\n [0x42, 0x41], //BA - OS/2 struct bitmap array\n [0x43, 0x49], //CI - OS/2 struct color icon\n [0x43, 0x50], //CP - OS/2 const color pointer\n [0x49, 0x43], //IC - OS/2 struct icon\n [0x50, 0x54] //PT - OS/2 pointer\n ]\n };\n\n /**\n * Recognize filetype of Image by magic-bytes\n *\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n *\n * @name getImageFileTypeByImageData\n * @public\n * @function\n * @param {string|arraybuffer} imageData imageData as binary String or arraybuffer\n * @param {string} format format of file if filetype-recognition fails, e.g. 'JPEG'\n *\n * @returns {string} filetype of Image\n */\n var getImageFileTypeByImageData = (jsPDFAPI.__addimage__.getImageFileTypeByImageData = function(\n imageData,\n fallbackFormat\n ) {\n fallbackFormat = fallbackFormat || UNKNOWN;\n var i;\n var j;\n var result = UNKNOWN;\n var headerSchemata;\n var compareResult;\n var fileType;\n\n if (\n fallbackFormat === \"RGBA\" ||\n (imageData.data !== undefined &&\n imageData.data instanceof Uint8ClampedArray &&\n \"height\" in imageData &&\n \"width\" in imageData)\n ) {\n return \"RGBA\";\n }\n\n if (isArrayBufferView(imageData)) {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData[j]) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n } else {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData.charCodeAt(j)) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n }\n\n if (result === UNKNOWN && fallbackFormat !== UNKNOWN) {\n result = fallbackFormat;\n }\n return result;\n });\n\n // Image functionality ported from pdf.js\n var putImage = function(image) {\n var out = this.internal.write;\n var putStream = this.internal.putStream;\n var getFilters = this.internal.getFilters;\n\n var filter = getFilters();\n while (filter.indexOf(\"FlateEncode\") !== -1) {\n filter.splice(filter.indexOf(\"FlateEncode\"), 1);\n }\n\n image.objectId = this.internal.newObject();\n\n var additionalKeyValues = [];\n additionalKeyValues.push({ key: \"Type\", value: \"/XObject\" });\n additionalKeyValues.push({ key: \"Subtype\", value: \"/Image\" });\n additionalKeyValues.push({ key: \"Width\", value: image.width });\n additionalKeyValues.push({ key: \"Height\", value: image.height });\n\n if (image.colorSpace === color_spaces.INDEXED) {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value:\n \"[/Indexed /DeviceRGB \" +\n // if an indexed png defines more than one colour with transparency, we've created a sMask\n (image.palette.length / 3 - 1) +\n \" \" +\n (\"sMask\" in image && typeof image.sMask !== \"undefined\"\n ? image.objectId + 2\n : image.objectId + 1) +\n \" 0 R]\"\n });\n } else {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value: \"/\" + image.colorSpace\n });\n if (image.colorSpace === color_spaces.DEVICE_CMYK) {\n additionalKeyValues.push({ key: \"Decode\", value: \"[1 0 1 0 1 0 1 0]\" });\n }\n }\n additionalKeyValues.push({\n key: \"BitsPerComponent\",\n value: image.bitsPerComponent\n });\n if (\n \"decodeParameters\" in image &&\n typeof image.decodeParameters !== \"undefined\"\n ) {\n additionalKeyValues.push({\n key: \"DecodeParms\",\n value: \"<<\" + image.decodeParameters + \">>\"\n });\n }\n if (\"transparency\" in image && Array.isArray(image.transparency)) {\n var transparency = \"\",\n i = 0,\n len = image.transparency.length;\n for (; i < len; i++)\n transparency +=\n image.transparency[i] + \" \" + image.transparency[i] + \" \";\n\n additionalKeyValues.push({\n key: \"Mask\",\n value: \"[\" + transparency + \"]\"\n });\n }\n if (typeof image.sMask !== \"undefined\") {\n additionalKeyValues.push({\n key: \"SMask\",\n value: image.objectId + 1 + \" 0 R\"\n });\n }\n\n var alreadyAppliedFilters =\n typeof image.filter !== \"undefined\" ? [\"/\" + image.filter] : undefined;\n\n putStream({\n data: image.data,\n additionalKeyValues: additionalKeyValues,\n alreadyAppliedFilters: alreadyAppliedFilters,\n objectId: image.objectId\n });\n\n out(\"endobj\");\n\n // Soft mask\n if (\"sMask\" in image && typeof image.sMask !== \"undefined\") {\n var decodeParameters =\n \"/Predictor \" +\n image.predictor +\n \" /Colors 1 /BitsPerComponent \" +\n image.bitsPerComponent +\n \" /Columns \" +\n image.width;\n var sMask = {\n width: image.width,\n height: image.height,\n colorSpace: \"DeviceGray\",\n bitsPerComponent: image.bitsPerComponent,\n decodeParameters: decodeParameters,\n data: image.sMask\n };\n if (\"filter\" in image) {\n sMask.filter = image.filter;\n }\n putImage.call(this, sMask);\n }\n\n //Palette\n if (image.colorSpace === color_spaces.INDEXED) {\n var objId = this.internal.newObject();\n //out('<< /Filter / ' + img['f'] +' /Length ' + img['pal'].length + '>>');\n //putStream(zlib.compress(img['pal']));\n putStream({\n data: arrayBufferToBinaryString(new Uint8Array(image.palette)),\n objectId: objId\n });\n out(\"endobj\");\n }\n };\n var putResourcesCallback = function() {\n var images = this.internal.collections[namespace + \"images\"];\n for (var i in images) {\n putImage.call(this, images[i]);\n }\n };\n var putXObjectsDictCallback = function() {\n var images = this.internal.collections[namespace + \"images\"],\n out = this.internal.write,\n image;\n for (var i in images) {\n image = images[i];\n out(\"/I\" + image.index, image.objectId, \"0\", \"R\");\n }\n };\n\n var checkCompressValue = function(value) {\n if (value && typeof value === \"string\") value = value.toUpperCase();\n return value in jsPDFAPI.image_compression ? value : image_compression.NONE;\n };\n\n var initialize = function() {\n if (!this.internal.collections[namespace + \"images\"]) {\n this.internal.collections[namespace + \"images\"] = {};\n this.internal.events.subscribe(\"putResources\", putResourcesCallback);\n this.internal.events.subscribe(\"putXobjectDict\", putXObjectsDictCallback);\n }\n };\n\n var getImages = function() {\n var images = this.internal.collections[namespace + \"images\"];\n initialize.call(this);\n return images;\n };\n var getImageIndex = function() {\n return Object.keys(this.internal.collections[namespace + \"images\"]).length;\n };\n var notDefined = function(value) {\n return typeof value === \"undefined\" || value === null || value.length === 0;\n };\n var generateAliasFromImageData = function(imageData) {\n if (typeof imageData === \"string\" || isArrayBufferView(imageData)) {\n return sHashCode(imageData);\n } else if (isArrayBufferView(imageData.data)) {\n return sHashCode(imageData.data);\n }\n\n return null;\n };\n\n var isImageTypeSupported = function(type) {\n return typeof jsPDFAPI[\"process\" + type.toUpperCase()] === \"function\";\n };\n\n var isDOMElement = function(object) {\n return typeof object === \"object\" && object.nodeType === 1;\n };\n\n var getImageDataFromElement = function(element, format) {\n //if element is an image which uses data url definition, just return the dataurl\n if (element.nodeName === \"IMG\" && element.hasAttribute(\"src\")) {\n var src = \"\" + element.getAttribute(\"src\");\n\n //is base64 encoded dataUrl, directly process it\n if (src.indexOf(\"data:image/\") === 0) {\n return atob(\n unescape(src)\n .split(\"base64,\")\n .pop()\n );\n }\n\n //it is probably an url, try to load it\n var tmpImageData = jsPDFAPI.loadFile(src, true);\n if (tmpImageData !== undefined) {\n return tmpImageData;\n }\n }\n\n if (element.nodeName === \"CANVAS\") {\n if (element.width === 0 || element.height === 0) {\n throw new Error(\n \"Given canvas must have data. Canvas width: \" +\n element.width +\n \", height: \" +\n element.height\n );\n }\n var mimeType;\n switch (format) {\n case \"PNG\":\n mimeType = \"image/png\";\n break;\n case \"WEBP\":\n mimeType = \"image/webp\";\n break;\n case \"JPEG\":\n case \"JPG\":\n default:\n mimeType = \"image/jpeg\";\n break;\n }\n return atob(\n element\n .toDataURL(mimeType, 1.0)\n .split(\"base64,\")\n .pop()\n );\n }\n };\n\n var checkImagesForAlias = function(alias) {\n var images = this.internal.collections[namespace + \"images\"];\n if (images) {\n for (var e in images) {\n if (alias === images[e].alias) {\n return images[e];\n }\n }\n }\n };\n\n var determineWidthAndHeight = function(width, height, image) {\n if (!width && !height) {\n width = -96;\n height = -96;\n }\n if (width < 0) {\n width = (-1 * image.width * 72) / width / this.internal.scaleFactor;\n }\n if (height < 0) {\n height = (-1 * image.height * 72) / height / this.internal.scaleFactor;\n }\n if (width === 0) {\n width = (height * image.width) / image.height;\n }\n if (height === 0) {\n height = (width * image.height) / image.width;\n }\n\n return [width, height];\n };\n\n var writeImageToPDF = function(x, y, width, height, image, rotation) {\n var dims = determineWidthAndHeight.call(this, width, height, image),\n coord = this.internal.getCoordinateString,\n vcoord = this.internal.getVerticalCoordinateString;\n\n var images = getImages.call(this);\n\n width = dims[0];\n height = dims[1];\n images[image.index] = image;\n\n if (rotation) {\n rotation *= Math.PI / 180;\n var c = Math.cos(rotation);\n var s = Math.sin(rotation);\n //like in pdf Reference do it 4 digits instead of 2\n var f4 = function(number) {\n return number.toFixed(4);\n };\n var rotationTransformationMatrix = [\n f4(c),\n f4(s),\n f4(s * -1),\n f4(c),\n 0,\n 0,\n \"cm\"\n ];\n }\n this.internal.write(\"q\"); //Save graphics state\n if (rotation) {\n this.internal.write(\n [1, \"0\", \"0\", 1, coord(x), vcoord(y + height), \"cm\"].join(\" \")\n ); //Translate\n this.internal.write(rotationTransformationMatrix.join(\" \")); //Rotate\n this.internal.write(\n [coord(width), \"0\", \"0\", coord(height), \"0\", \"0\", \"cm\"].join(\" \")\n ); //Scale\n } else {\n this.internal.write(\n [\n coord(width),\n \"0\",\n \"0\",\n coord(height),\n coord(x),\n vcoord(y + height),\n \"cm\"\n ].join(\" \")\n ); //Translate and Scale\n }\n\n if (this.isAdvancedAPI()) {\n // draw image bottom up when in \"advanced\" API mode\n this.internal.write([1, 0, 0, -1, 0, 0, \"cm\"].join(\" \"));\n }\n\n this.internal.write(\"/I\" + image.index + \" Do\"); //Paint Image\n this.internal.write(\"Q\"); //Restore graphics state\n };\n\n /**\n * COLOR SPACES\n */\n var color_spaces = (jsPDFAPI.color_spaces = {\n DEVICE_RGB: \"DeviceRGB\",\n DEVICE_GRAY: \"DeviceGray\",\n DEVICE_CMYK: \"DeviceCMYK\",\n CAL_GREY: \"CalGray\",\n CAL_RGB: \"CalRGB\",\n LAB: \"Lab\",\n ICC_BASED: \"ICCBased\",\n INDEXED: \"Indexed\",\n PATTERN: \"Pattern\",\n SEPARATION: \"Separation\",\n DEVICE_N: \"DeviceN\"\n });\n\n /**\n * DECODE METHODS\n */\n jsPDFAPI.decode = {\n DCT_DECODE: \"DCTDecode\",\n FLATE_DECODE: \"FlateDecode\",\n LZW_DECODE: \"LZWDecode\",\n JPX_DECODE: \"JPXDecode\",\n JBIG2_DECODE: \"JBIG2Decode\",\n ASCII85_DECODE: \"ASCII85Decode\",\n ASCII_HEX_DECODE: \"ASCIIHexDecode\",\n RUN_LENGTH_DECODE: \"RunLengthDecode\",\n CCITT_FAX_DECODE: \"CCITTFaxDecode\"\n };\n\n /**\n * IMAGE COMPRESSION TYPES\n */\n var image_compression = (jsPDFAPI.image_compression = {\n NONE: \"NONE\",\n FAST: \"FAST\",\n MEDIUM: \"MEDIUM\",\n SLOW: \"SLOW\"\n });\n\n /**\n * @name sHashCode\n * @function\n * @param {string} data\n * @returns {string}\n */\n var sHashCode = (jsPDFAPI.__addimage__.sHashCode = function(data) {\n var hash = 0,\n i,\n len;\n\n if (typeof data === \"string\") {\n len = data.length;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n } else if (isArrayBufferView(data)) {\n len = data.byteLength / 2;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data[i];\n hash |= 0; // Convert to 32bit integer\n }\n }\n return hash;\n });\n\n /**\n * Validates if given String is a valid Base64-String\n *\n * @name validateStringAsBase64\n * @public\n * @function\n * @param {String} possible Base64-String\n *\n * @returns {boolean}\n */\n var validateStringAsBase64 = (jsPDFAPI.__addimage__.validateStringAsBase64 = function(\n possibleBase64String\n ) {\n possibleBase64String = possibleBase64String || \"\";\n possibleBase64String.toString().trim();\n\n var result = true;\n\n if (possibleBase64String.length === 0) {\n result = false;\n }\n\n if (possibleBase64String.length % 4 !== 0) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9+/]+$/.test(\n possibleBase64String.substr(0, possibleBase64String.length - 2)\n ) === false\n ) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(\n possibleBase64String.substr(-2)\n ) === false\n ) {\n result = false;\n }\n return result;\n });\n\n /**\n * Strips out and returns info from a valid base64 data URI\n *\n * @name extractImageFromDataUrl\n * @function\n * @param {string} dataUrl a valid data URI of format 'data:[][;base64],'\n * @returns {Array}an Array containing the following\n * [0] the complete data URI\n * [1] \n * [2] format - the second part of the mime-type i.e 'png' in 'image/png'\n * [4] \n */\n var extractImageFromDataUrl = (jsPDFAPI.__addimage__.extractImageFromDataUrl = function(\n dataUrl\n ) {\n dataUrl = dataUrl || \"\";\n var dataUrlParts = dataUrl.split(\"base64,\");\n var result = null;\n\n if (dataUrlParts.length === 2) {\n var extractedInfo = /^data:(\\w*\\/\\w*);*(charset=(?!charset=)[\\w=-]*)*;*$/.exec(\n dataUrlParts[0]\n );\n if (Array.isArray(extractedInfo)) {\n result = {\n mimeType: extractedInfo[1],\n charset: extractedInfo[2],\n data: dataUrlParts[1]\n };\n }\n }\n return result;\n });\n\n /**\n * Check to see if ArrayBuffer is supported\n *\n * @name supportsArrayBuffer\n * @function\n * @returns {boolean}\n */\n var supportsArrayBuffer = (jsPDFAPI.__addimage__.supportsArrayBuffer = function() {\n return (\n typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\"\n );\n });\n\n /**\n * Tests supplied object to determine if ArrayBuffer\n *\n * @name isArrayBuffer\n * @function\n * @param {Object} object an Object\n *\n * @returns {boolean}\n */\n jsPDFAPI.__addimage__.isArrayBuffer = function(object) {\n return supportsArrayBuffer() && object instanceof ArrayBuffer;\n };\n\n /**\n * Tests supplied object to determine if it implements the ArrayBufferView (TypedArray) interface\n *\n * @name isArrayBufferView\n * @function\n * @param {Object} object an Object\n * @returns {boolean}\n */\n var isArrayBufferView = (jsPDFAPI.__addimage__.isArrayBufferView = function(\n object\n ) {\n return (\n supportsArrayBuffer() &&\n typeof Uint32Array !== \"undefined\" &&\n (object instanceof Int8Array ||\n object instanceof Uint8Array ||\n (typeof Uint8ClampedArray !== \"undefined\" &&\n object instanceof Uint8ClampedArray) ||\n object instanceof Int16Array ||\n object instanceof Uint16Array ||\n object instanceof Int32Array ||\n object instanceof Uint32Array ||\n object instanceof Float32Array ||\n object instanceof Float64Array)\n );\n });\n\n /**\n * Convert Binary String to ArrayBuffer\n *\n * @name binaryStringToUint8Array\n * @public\n * @function\n * @param {string} BinaryString with ImageData\n * @returns {Uint8Array}\n */\n var binaryStringToUint8Array = (jsPDFAPI.__addimage__.binaryStringToUint8Array = function(\n binary_string\n ) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n });\n\n /**\n * Convert the Buffer to a Binary String\n *\n * @name arrayBufferToBinaryString\n * @public\n * @function\n * @param {ArrayBuffer|ArrayBufferView} ArrayBuffer buffer or bufferView with ImageData\n *\n * @returns {String}\n */\n var arrayBufferToBinaryString = (jsPDFAPI.__addimage__.arrayBufferToBinaryString = function(\n buffer\n ) {\n var out = \"\";\n // There are calls with both ArrayBuffer and already converted Uint8Array or other BufferView.\n // Do not copy the array if input is already an array.\n var buf = isArrayBufferView(buffer) ? buffer : new Uint8Array(buffer);\n for (var i = 0; i < buf.length; i += ARRAY_APPLY_BATCH) {\n // Limit the amount of characters being parsed to prevent overflow.\n // Note that while TextDecoder would be faster, it does not have the same\n // functionality as fromCharCode with any provided encodings as of 3/2021.\n out += String.fromCharCode.apply(\n null,\n buf.subarray(i, i + ARRAY_APPLY_BATCH)\n );\n }\n return out;\n });\n\n /**\n * Possible parameter for addImage, an RGBA buffer with size.\n *\n * @typedef {Object} RGBAData\n * @property {Uint8ClampedArray} data - Single dimensional array of RGBA values. For example from canvas getImageData.\n * @property {number} width - Image width as the data does not carry this information in itself.\n * @property {number} height - Image height as the data does not carry this information in itself.\n */\n\n /**\n * Adds an Image to the PDF.\n *\n * @name addImage\n * @public\n * @function\n * @param {string|HTMLImageElement|HTMLCanvasElement|Uint8Array|RGBAData} imageData imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement or object containing RGBA array (like output from canvas.getImageData).\n * @param {string} format format of file if filetype-recognition fails or in case of a Canvas-Element needs to be specified (default for Canvas is JPEG), e.g. 'JPEG', 'PNG', 'WEBP'\n * @param {number} x x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width width of the image (in units declared at inception of PDF document)\n * @param {number} height height of the Image (in units declared at inception of PDF document)\n * @param {string} alias alias of the image (if used multiple times)\n * @param {string} compression compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation rotation of the image in degrees (0-359)\n *\n * @returns jsPDF\n */\n jsPDFAPI.addImage = function() {\n var imageData, format, x, y, w, h, alias, compression, rotation;\n\n imageData = arguments[0];\n if (typeof arguments[1] === \"number\") {\n format = UNKNOWN;\n x = arguments[1];\n y = arguments[2];\n w = arguments[3];\n h = arguments[4];\n alias = arguments[5];\n compression = arguments[6];\n rotation = arguments[7];\n } else {\n format = arguments[1];\n x = arguments[2];\n y = arguments[3];\n w = arguments[4];\n h = arguments[5];\n alias = arguments[6];\n compression = arguments[7];\n rotation = arguments[8];\n }\n\n if (\n typeof imageData === \"object\" &&\n !isDOMElement(imageData) &&\n \"imageData\" in imageData\n ) {\n var options = imageData;\n\n imageData = options.imageData;\n format = options.format || format || UNKNOWN;\n x = options.x || x || 0;\n y = options.y || y || 0;\n w = options.w || options.width || w;\n h = options.h || options.height || h;\n alias = options.alias || alias;\n compression = options.compression || compression;\n rotation = options.rotation || options.angle || rotation;\n }\n\n //If compression is not explicitly set, determine if we should use compression\n var filter = this.internal.getFilters();\n if (compression === undefined && filter.indexOf(\"FlateEncode\") !== -1) {\n compression = \"SLOW\";\n }\n\n if (isNaN(x) || isNaN(y)) {\n throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");\n }\n\n initialize.call(this);\n\n var image = processImageData.call(\n this,\n imageData,\n format,\n alias,\n compression\n );\n\n writeImageToPDF.call(this, x, y, w, h, image, rotation);\n\n return this;\n };\n\n var processImageData = function(imageData, format, alias, compression) {\n var result, dataAsBinaryString;\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n imageData = unescape(imageData);\n var tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData !== \"\") {\n imageData = tmpImageData;\n } else {\n tmpImageData = jsPDFAPI.loadFile(imageData, true);\n if (tmpImageData !== undefined) {\n imageData = tmpImageData;\n }\n }\n }\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData, format);\n }\n\n format = getImageFileTypeByImageData(imageData, format);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n // now do the heavy lifting\n\n if (notDefined(alias)) {\n alias = generateAliasFromImageData(imageData);\n }\n result = checkImagesForAlias.call(this, alias);\n\n if (!result) {\n if (supportsArrayBuffer()) {\n // no need to convert if imageData is already uint8array\n if (!(imageData instanceof Uint8Array) && format !== \"RGBA\") {\n dataAsBinaryString = imageData;\n imageData = binaryStringToUint8Array(imageData);\n }\n }\n\n result = this[\"process\" + format.toUpperCase()](\n imageData,\n getImageIndex.call(this),\n alias,\n checkCompressValue(compression),\n dataAsBinaryString\n );\n }\n\n if (!result) {\n throw new Error(\"An unknown error occurred whilst processing the image.\");\n }\n return result;\n };\n\n /**\n * @name convertBase64ToBinaryString\n * @function\n * @param {string} stringData\n * @returns {string} binary string\n */\n var convertBase64ToBinaryString = (jsPDFAPI.__addimage__.convertBase64ToBinaryString = function(\n stringData,\n throwError\n ) {\n throwError = typeof throwError === \"boolean\" ? throwError : true;\n var base64Info;\n var imageData = \"\";\n var rawData;\n\n if (typeof stringData === \"string\") {\n base64Info = extractImageFromDataUrl(stringData);\n rawData = base64Info !== null ? base64Info.data : stringData;\n\n try {\n imageData = atob(rawData);\n } catch (e) {\n if (throwError) {\n if (!validateStringAsBase64(rawData)) {\n throw new Error(\n \"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \"\n );\n } else {\n throw new Error(\n \"atob-Error in jsPDF.convertBase64ToBinaryString \" + e.message\n );\n }\n }\n }\n }\n return imageData;\n });\n\n /**\n * @name getImageProperties\n * @function\n * @param {Object} imageData\n * @returns {Object}\n */\n jsPDFAPI.getImageProperties = function(imageData) {\n var image;\n var tmpImageData = \"\";\n var format;\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData);\n }\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData === \"\") {\n tmpImageData = jsPDFAPI.loadFile(imageData) || \"\";\n }\n imageData = tmpImageData;\n }\n\n format = getImageFileTypeByImageData(imageData);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n if (supportsArrayBuffer() && !(imageData instanceof Uint8Array)) {\n imageData = binaryStringToUint8Array(imageData);\n }\n\n image = this[\"process\" + format.toUpperCase()](imageData);\n\n if (!image) {\n throw new Error(\"An unknown error occurred whilst processing the image\");\n }\n\n image.fileType = format;\n\n return image;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF Annotations PlugIn\n *\n * There are many types of annotations in a PDF document. Annotations are placed\n * on a page at a particular location. They are not 'attached' to an object.\n *
\n * This plugin current supports
\n *
  • Goto Page (set pageNumber and top in options)\n *
  • Goto Name (set name and top in options)\n *
  • Goto URL (set url in options)\n *

    \n * \tThe destination magnification factor can also be specified when goto is a page number or a named destination. (see documentation below)\n * (set magFactor in options). XYZ is the default.\n *

    \n *

    \n * Links, Text, Popup, and FreeText are supported.\n *

    \n *

    \n * Options In PDF spec Not Implemented Yet\n *

  • link border\n *
  • named target\n *
  • page coordinates\n *
  • destination page scaling and layout\n *
  • actions other than URL and GotoPage\n *
  • background / hover actions\n *

    \n * @name annotations\n * @module\n */\n\n/*\n Destination Magnification Factors\n See PDF 1.3 Page 386 for meanings and options\n\n [supported]\n\tXYZ (options; left top zoom)\n\tFit (no options)\n\tFitH (options: top)\n\tFitV (options: left)\n\n\t[not supported]\n\tFitR\n\tFitB\n\tFitBH\n\tFitBV\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var notEmpty = function(obj) {\n if (typeof obj != \"undefined\") {\n if (obj != \"\") {\n return true;\n }\n }\n };\n\n jsPDF.API.events.push([\n \"addPage\",\n function(addPageData) {\n var pageInfo = this.internal.getPageInfo(addPageData.pageNumber);\n pageInfo.pageContext.annotations = [];\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putPage\",\n function(putPageData) {\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal\n .getVerticalCoordinateString;\n var pageInfo = this.internal.getPageInfoByObjId(putPageData.objId);\n var pageAnnos = putPageData.pageContext.annotations;\n\n var anno, rect, line;\n var found = false;\n for (var a = 0; a < pageAnnos.length && !found; a++) {\n anno = pageAnnos[a];\n switch (anno.type) {\n case \"link\":\n if (\n notEmpty(anno.options.url) ||\n notEmpty(anno.options.pageNumber)\n ) {\n found = true;\n }\n break;\n case \"reference\":\n case \"text\":\n case \"freetext\":\n found = true;\n break;\n }\n }\n if (found == false) {\n return;\n }\n\n this.internal.write(\"/Annots [\");\n for (var i = 0; i < pageAnnos.length; i++) {\n anno = pageAnnos[i];\n var escape = this.internal.pdfEscape;\n var encryptor = this.internal.getEncryptor(putPageData.objId);\n\n switch (anno.type) {\n case \"reference\":\n // References to Widget Annotations (for AcroForm Fields)\n this.internal.write(\" \" + anno.object.objId + \" 0 R \");\n break;\n case \"text\":\n // Create a an object for both the text and the popup\n var objText = this.internal.newAdditionalObject();\n var objPopup = this.internal.newAdditionalObject();\n var encryptorText = this.internal.getEncryptor(objText.objId);\n\n var title = anno.title || \"Note\";\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n\n line =\n \"<>\";\n objText.content = line;\n\n var parent = objText.objId + \" 0 R\";\n var popoff = 30;\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x + popoff) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(\n anno.bounds.x + anno.bounds.w + popoff\n ) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n line =\n \"<>\";\n objPopup.content = line;\n\n this.internal.write(objText.objId, \"0 R\", objPopup.objId, \"0 R\");\n\n break;\n case \"freetext\":\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \"] \";\n var color = anno.color || \"#000000\";\n line =\n \"<>\";\n this.internal.write(line);\n break;\n case \"link\":\n if (anno.options.name) {\n var loc = this.annotations._nameMap[anno.options.name];\n anno.options.pageNumber = loc.page;\n anno.options.top = loc.y;\n } else {\n if (!anno.options.top) {\n anno.options.top = 0;\n }\n }\n\n rect =\n \"/Rect [\" +\n anno.finalBounds.x +\n \" \" +\n anno.finalBounds.y +\n \" \" +\n anno.finalBounds.w +\n \" \" +\n anno.finalBounds.h +\n \"] \";\n\n line = \"\";\n if (anno.options.url) {\n line =\n \"<>\";\n } else if (anno.options.pageNumber) {\n // first page is 0\n var info = this.internal.getPageInfo(anno.options.pageNumber);\n line =\n \"<>\";\n this.internal.write(line);\n }\n break;\n }\n }\n this.internal.write(\"]\");\n }\n ]);\n\n /**\n * @name createAnnotation\n * @function\n * @param {Object} options\n */\n jsPDFAPI.createAnnotation = function(options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n switch (options.type) {\n case \"link\":\n this.link(\n options.bounds.x,\n options.bounds.y,\n options.bounds.w,\n options.bounds.h,\n options\n );\n break;\n case \"text\":\n case \"freetext\":\n pageInfo.pageContext.annotations.push(options);\n break;\n }\n };\n\n /**\n * Create a link\n *\n * valid options\n *
  • pageNumber or url [required]\n *

    If pageNumber is specified, top and zoom may also be specified

    \n * @name link\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {Object} options\n */\n jsPDFAPI.link = function(x, y, w, h, options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\n\n pageInfo.pageContext.annotations.push({\n finalBounds: {\n x: getHorizontalCoordinateString(x),\n y: getVerticalCoordinateString(y),\n w: getHorizontalCoordinateString(x + w),\n h: getVerticalCoordinateString(y + h)\n },\n options: options,\n type: \"link\"\n });\n };\n\n /**\n * Currently only supports single line text.\n * Returns the width of the text/link\n *\n * @name textWithLink\n * @function\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {Object} options\n * @returns {number} width the width of the text/link\n */\n jsPDFAPI.textWithLink = function(text, x, y, options) {\n var totalLineWidth = this.getTextWidth(text);\n var lineHeight = this.internal.getLineHeight() / this.internal.scaleFactor;\n var linkHeight, linkWidth;\n\n // Checking if maxWidth option is passed to determine lineWidth and number of lines for each line\n if (options.maxWidth !== undefined) {\n var { maxWidth } = options;\n linkWidth = maxWidth;\n var numOfLines = this.splitTextToSize(text, linkWidth).length;\n linkHeight = Math.ceil(lineHeight * numOfLines);\n } else {\n linkWidth = totalLineWidth;\n linkHeight = lineHeight;\n }\n\n this.text(text, x, y, options);\n\n //TODO We really need the text baseline height to do this correctly.\n // Or ability to draw text on top, bottom, center, or baseline.\n y += lineHeight * 0.2;\n //handle x position based on the align option\n if (options.align === \"center\") {\n x = x - totalLineWidth / 2; //since starting from center move the x position by half of text width\n }\n if (options.align === \"right\") {\n x = x - totalLineWidth;\n }\n this.link(x, y - lineHeight, linkWidth, linkHeight, options);\n return totalLineWidth;\n };\n\n //TODO move into external library\n /**\n * @name getTextWidth\n * @function\n * @param {string} text\n * @returns {number} txtWidth\n */\n jsPDFAPI.getTextWidth = function(text) {\n var fontSize = this.internal.getFontSize();\n var txtWidth =\n (this.getStringUnitWidth(text) * fontSize) / this.internal.scaleFactor;\n return txtWidth;\n };\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF arabic parser PlugIn\n *\n * @name arabic\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Arabic shape substitutions: char code => (isolated, final, initial, medial).\n * Arabic Substition A\n */\n var arabicSubstitionA = {\n 0x0621: [0xfe80], // ARABIC LETTER HAMZA\n 0x0622: [0xfe81, 0xfe82], // ARABIC LETTER ALEF WITH MADDA ABOVE\n 0x0623: [0xfe83, 0xfe84], // ARABIC LETTER ALEF WITH HAMZA ABOVE\n 0x0624: [0xfe85, 0xfe86], // ARABIC LETTER WAW WITH HAMZA ABOVE\n 0x0625: [0xfe87, 0xfe88], // ARABIC LETTER ALEF WITH HAMZA BELOW\n 0x0626: [0xfe89, 0xfe8a, 0xfe8b, 0xfe8c], // ARABIC LETTER YEH WITH HAMZA ABOVE\n 0x0627: [0xfe8d, 0xfe8e], // ARABIC LETTER ALEF\n 0x0628: [0xfe8f, 0xfe90, 0xfe91, 0xfe92], // ARABIC LETTER BEH\n 0x0629: [0xfe93, 0xfe94], // ARABIC LETTER TEH MARBUTA\n 0x062a: [0xfe95, 0xfe96, 0xfe97, 0xfe98], // ARABIC LETTER TEH\n 0x062b: [0xfe99, 0xfe9a, 0xfe9b, 0xfe9c], // ARABIC LETTER THEH\n 0x062c: [0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], // ARABIC LETTER JEEM\n 0x062d: [0xfea1, 0xfea2, 0xfea3, 0xfea4], // ARABIC LETTER HAH\n 0x062e: [0xfea5, 0xfea6, 0xfea7, 0xfea8], // ARABIC LETTER KHAH\n 0x062f: [0xfea9, 0xfeaa], // ARABIC LETTER DAL\n 0x0630: [0xfeab, 0xfeac], // ARABIC LETTER THAL\n 0x0631: [0xfead, 0xfeae], // ARABIC LETTER REH\n 0x0632: [0xfeaf, 0xfeb0], // ARABIC LETTER ZAIN\n 0x0633: [0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4], // ARABIC LETTER SEEN\n 0x0634: [0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], // ARABIC LETTER SHEEN\n 0x0635: [0xfeb9, 0xfeba, 0xfebb, 0xfebc], // ARABIC LETTER SAD\n 0x0636: [0xfebd, 0xfebe, 0xfebf, 0xfec0], // ARABIC LETTER DAD\n 0x0637: [0xfec1, 0xfec2, 0xfec3, 0xfec4], // ARABIC LETTER TAH\n 0x0638: [0xfec5, 0xfec6, 0xfec7, 0xfec8], // ARABIC LETTER ZAH\n 0x0639: [0xfec9, 0xfeca, 0xfecb, 0xfecc], // ARABIC LETTER AIN\n 0x063a: [0xfecd, 0xfece, 0xfecf, 0xfed0], // ARABIC LETTER GHAIN\n 0x0641: [0xfed1, 0xfed2, 0xfed3, 0xfed4], // ARABIC LETTER FEH\n 0x0642: [0xfed5, 0xfed6, 0xfed7, 0xfed8], // ARABIC LETTER QAF\n 0x0643: [0xfed9, 0xfeda, 0xfedb, 0xfedc], // ARABIC LETTER KAF\n 0x0644: [0xfedd, 0xfede, 0xfedf, 0xfee0], // ARABIC LETTER LAM\n 0x0645: [0xfee1, 0xfee2, 0xfee3, 0xfee4], // ARABIC LETTER MEEM\n 0x0646: [0xfee5, 0xfee6, 0xfee7, 0xfee8], // ARABIC LETTER NOON\n 0x0647: [0xfee9, 0xfeea, 0xfeeb, 0xfeec], // ARABIC LETTER HEH\n 0x0648: [0xfeed, 0xfeee], // ARABIC LETTER WAW\n 0x0649: [0xfeef, 0xfef0, 64488, 64489], // ARABIC LETTER ALEF MAKSURA\n 0x064a: [0xfef1, 0xfef2, 0xfef3, 0xfef4], // ARABIC LETTER YEH\n 0x0671: [0xfb50, 0xfb51], // ARABIC LETTER ALEF WASLA\n 0x0677: [0xfbdd], // ARABIC LETTER U WITH HAMZA ABOVE\n 0x0679: [0xfb66, 0xfb67, 0xfb68, 0xfb69], // ARABIC LETTER TTEH\n 0x067a: [0xfb5e, 0xfb5f, 0xfb60, 0xfb61], // ARABIC LETTER TTEHEH\n 0x067b: [0xfb52, 0xfb53, 0xfb54, 0xfb55], // ARABIC LETTER BEEH\n 0x067e: [0xfb56, 0xfb57, 0xfb58, 0xfb59], // ARABIC LETTER PEH\n 0x067f: [0xfb62, 0xfb63, 0xfb64, 0xfb65], // ARABIC LETTER TEHEH\n 0x0680: [0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d], // ARABIC LETTER BEHEH\n 0x0683: [0xfb76, 0xfb77, 0xfb78, 0xfb79], // ARABIC LETTER NYEH\n 0x0684: [0xfb72, 0xfb73, 0xfb74, 0xfb75], // ARABIC LETTER DYEH\n 0x0686: [0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], // ARABIC LETTER TCHEH\n 0x0687: [0xfb7e, 0xfb7f, 0xfb80, 0xfb81], // ARABIC LETTER TCHEHEH\n 0x0688: [0xfb88, 0xfb89], // ARABIC LETTER DDAL\n 0x068c: [0xfb84, 0xfb85], // ARABIC LETTER DAHAL\n 0x068d: [0xfb82, 0xfb83], // ARABIC LETTER DDAHAL\n 0x068e: [0xfb86, 0xfb87], // ARABIC LETTER DUL\n 0x0691: [0xfb8c, 0xfb8d], // ARABIC LETTER RREH\n 0x0698: [0xfb8a, 0xfb8b], // ARABIC LETTER JEH\n 0x06a4: [0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d], // ARABIC LETTER VEH\n 0x06a6: [0xfb6e, 0xfb6f, 0xfb70, 0xfb71], // ARABIC LETTER PEHEH\n 0x06a9: [0xfb8e, 0xfb8f, 0xfb90, 0xfb91], // ARABIC LETTER KEHEH\n 0x06ad: [0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6], // ARABIC LETTER NG\n 0x06af: [0xfb92, 0xfb93, 0xfb94, 0xfb95], // ARABIC LETTER GAF\n 0x06b1: [0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d], // ARABIC LETTER NGOEH\n 0x06b3: [0xfb96, 0xfb97, 0xfb98, 0xfb99], // ARABIC LETTER GUEH\n 0x06ba: [0xfb9e, 0xfb9f], // ARABIC LETTER NOON GHUNNA\n 0x06bb: [0xfba0, 0xfba1, 0xfba2, 0xfba3], // ARABIC LETTER RNOON\n 0x06be: [0xfbaa, 0xfbab, 0xfbac, 0xfbad], // ARABIC LETTER HEH DOACHASHMEE\n 0x06c0: [0xfba4, 0xfba5], // ARABIC LETTER HEH WITH YEH ABOVE\n 0x06c1: [0xfba6, 0xfba7, 0xfba8, 0xfba9], // ARABIC LETTER HEH GOAL\n 0x06c5: [0xfbe0, 0xfbe1], // ARABIC LETTER KIRGHIZ OE\n 0x06c6: [0xfbd9, 0xfbda], // ARABIC LETTER OE\n 0x06c7: [0xfbd7, 0xfbd8], // ARABIC LETTER U\n 0x06c8: [0xfbdb, 0xfbdc], // ARABIC LETTER YU\n 0x06c9: [0xfbe2, 0xfbe3], // ARABIC LETTER KIRGHIZ YU\n 0x06cb: [0xfbde, 0xfbdf], // ARABIC LETTER VE\n 0x06cc: [0xfbfc, 0xfbfd, 0xfbfe, 0xfbff], // ARABIC LETTER FARSI YEH\n 0x06d0: [0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7], //ARABIC LETTER E\n 0x06d2: [0xfbae, 0xfbaf], // ARABIC LETTER YEH BARREE\n 0x06d3: [0xfbb0, 0xfbb1] // ARABIC LETTER YEH BARREE WITH HAMZA ABOVE\n };\n\n /*\n var ligaturesSubstitutionA = {\n 0xFBEA: []// ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM\n };\n */\n\n var ligatures = {\n 0xfedf: {\n 0xfe82: 0xfef5, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM\n 0xfe84: 0xfef7, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM\n 0xfe88: 0xfef9, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM\n 0xfe8e: 0xfefb // ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM\n },\n 0xfee0: {\n 0xfe82: 0xfef6, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM\n 0xfe84: 0xfef8, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM\n 0xfe88: 0xfefa, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM\n 0xfe8e: 0xfefc // ARABIC LIGATURE LAM WITH ALEF FINAL FORM\n },\n 0xfe8d: { 0xfedf: { 0xfee0: { 0xfeea: 0xfdf2 } } }, // ALLAH\n 0x0651: {\n 0x064c: 0xfc5e, // Shadda + Dammatan\n 0x064d: 0xfc5f, // Shadda + Kasratan\n 0x064e: 0xfc60, // Shadda + Fatha\n 0x064f: 0xfc61, // Shadda + Damma\n 0x0650: 0xfc62 // Shadda + Kasra\n }\n };\n\n var arabic_diacritics = {\n 1612: 64606, // Shadda + Dammatan\n 1613: 64607, // Shadda + Kasratan\n 1614: 64608, // Shadda + Fatha\n 1615: 64609, // Shadda + Damma\n 1616: 64610 // Shadda + Kasra\n };\n\n var alfletter = [1570, 1571, 1573, 1575];\n\n var noChangeInForm = -1;\n var isolatedForm = 0;\n var finalForm = 1;\n var initialForm = 2;\n var medialForm = 3;\n\n jsPDFAPI.__arabicParser__ = {};\n\n //private\n var isInArabicSubstitutionA = (jsPDFAPI.__arabicParser__.isInArabicSubstitutionA = function(\n letter\n ) {\n return typeof arabicSubstitionA[letter.charCodeAt(0)] !== \"undefined\";\n });\n\n var isArabicLetter = (jsPDFAPI.__arabicParser__.isArabicLetter = function(\n letter\n ) {\n return (\n typeof letter === \"string\" &&\n /^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(\n letter\n )\n );\n });\n\n var isArabicEndLetter = (jsPDFAPI.__arabicParser__.isArabicEndLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length <= 2\n );\n });\n\n var isArabicAlfLetter = (jsPDFAPI.__arabicParser__.isArabicAlfLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) && alfletter.indexOf(letter.charCodeAt(0)) >= 0\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasIsolatedForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 1\n );\n };\n\n var arabicLetterHasFinalForm = (jsPDFAPI.__arabicParser__.arabicLetterHasFinalForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 2\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasInitialForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 3\n );\n };\n\n var arabicLetterHasMedialForm = (jsPDFAPI.__arabicParser__.arabicLetterHasMedialForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length == 4\n );\n });\n\n var resolveLigatures = (jsPDFAPI.__arabicParser__.resolveLigatures = function(\n letters\n ) {\n var i = 0;\n var tmpLigatures = ligatures;\n var result = \"\";\n var effectedLetters = 0;\n\n for (i = 0; i < letters.length; i += 1) {\n if (typeof tmpLigatures[letters.charCodeAt(i)] !== \"undefined\") {\n effectedLetters++;\n tmpLigatures = tmpLigatures[letters.charCodeAt(i)];\n\n if (typeof tmpLigatures === \"number\") {\n result += String.fromCharCode(tmpLigatures);\n tmpLigatures = ligatures;\n effectedLetters = 0;\n }\n if (i === letters.length - 1) {\n tmpLigatures = ligatures;\n result += letters.charAt(i - (effectedLetters - 1));\n i = i - (effectedLetters - 1);\n effectedLetters = 0;\n }\n } else {\n tmpLigatures = ligatures;\n result += letters.charAt(i - effectedLetters);\n i = i - effectedLetters;\n effectedLetters = 0;\n }\n }\n\n return result;\n });\n\n jsPDFAPI.__arabicParser__.isArabicDiacritic = function(letter) {\n return (\n letter !== undefined &&\n arabic_diacritics[letter.charCodeAt(0)] !== undefined\n );\n };\n\n var getCorrectForm = (jsPDFAPI.__arabicParser__.getCorrectForm = function(\n currentChar,\n beforeChar,\n nextChar\n ) {\n if (!isArabicLetter(currentChar)) {\n return -1;\n }\n\n if (isInArabicSubstitutionA(currentChar) === false) {\n return noChangeInForm;\n }\n if (\n !arabicLetterHasFinalForm(currentChar) ||\n (!isArabicLetter(beforeChar) && !isArabicLetter(nextChar)) ||\n (!isArabicLetter(nextChar) && isArabicEndLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && !isArabicLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicAlfLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicEndLetter(beforeChar))\n ) {\n return isolatedForm;\n }\n\n if (\n arabicLetterHasMedialForm(currentChar) &&\n isArabicLetter(beforeChar) &&\n !isArabicEndLetter(beforeChar) &&\n isArabicLetter(nextChar) &&\n arabicLetterHasFinalForm(nextChar)\n ) {\n return medialForm;\n }\n\n if (isArabicEndLetter(currentChar) || !isArabicLetter(nextChar)) {\n return finalForm;\n }\n return initialForm;\n });\n\n /**\n * @name processArabic\n * @function\n * @param {string} text\n * @returns {string}\n */\n var parseArabic = function(text) {\n text = text || \"\";\n\n var result = \"\";\n var i = 0;\n var j = 0;\n var position = 0;\n var currentLetter = \"\";\n var prevLetter = \"\";\n var nextLetter = \"\";\n\n var words = text.split(\"\\\\s+\");\n var newWords = [];\n for (i = 0; i < words.length; i += 1) {\n newWords.push(\"\");\n for (j = 0; j < words[i].length; j += 1) {\n currentLetter = words[i][j];\n prevLetter = words[i][j - 1];\n nextLetter = words[i][j + 1];\n if (isArabicLetter(currentLetter)) {\n position = getCorrectForm(currentLetter, prevLetter, nextLetter);\n if (position !== -1) {\n newWords[i] += String.fromCharCode(\n arabicSubstitionA[currentLetter.charCodeAt(0)][position]\n );\n } else {\n newWords[i] += currentLetter;\n }\n } else {\n newWords[i] += currentLetter;\n }\n }\n\n newWords[i] = resolveLigatures(newWords[i]);\n }\n result = newWords.join(\" \");\n\n return result;\n };\n\n var processArabic = (jsPDFAPI.__arabicParser__.processArabic = jsPDFAPI.processArabic = function() {\n var text =\n typeof arguments[0] === \"string\" ? arguments[0] : arguments[0].text;\n var tmpText = [];\n var result;\n\n if (Array.isArray(text)) {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n tmpText.push([parseArabic(text[i][0]), text[i][1], text[i][2]]);\n } else {\n tmpText.push([parseArabic(text[i])]);\n }\n }\n result = tmpText;\n } else {\n result = parseArabic(text);\n }\n if (typeof arguments[0] === \"string\") {\n return result;\n } else {\n arguments[0].text = result;\n return arguments[0];\n }\n });\n\n jsPDFAPI.events.push([\"preProcessText\", processArabic]);\n})(jsPDF.API);\n","/** @license\n * jsPDF Autoprint Plugin\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name autoprint\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Makes the PDF automatically open the print-Dialog when opened in a PDF-viewer.\n *\n * @name autoPrint\n * @function\n * @param {Object} options (optional) Set the attribute variant to 'non-conform' (default) or 'javascript' to activate different methods of automatic printing when opening in a PDF-viewer .\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF();\n * doc.text(10, 10, 'This is a test');\n * doc.autoPrint({variant: 'non-conform'});\n * doc.save('autoprint.pdf');\n */\n jsPDFAPI.autoPrint = function(options) {\n \"use strict\";\n var refAutoPrintTag;\n options = options || {};\n options.variant = options.variant || \"non-conform\";\n\n switch (options.variant) {\n case \"javascript\":\n //https://github.com/Rob--W/pdf.js/commit/c676ecb5a0f54677b9f3340c3ef2cf42225453bb\n this.addJS(\"print({});\");\n break;\n case \"non-conform\":\n default:\n this.internal.events.subscribe(\"postPutResources\", function() {\n refAutoPrintTag = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /Named\");\n this.internal.out(\"/Type /Action\");\n this.internal.out(\"/N /Print\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.out(\"/OpenAction \" + refAutoPrintTag + \" 0 R\");\n });\n break;\n }\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Canvas PlugIn\n * This plugin mimics the HTML5 Canvas\n *\n * The goal is to provide a way for current canvas users to print directly to a PDF.\n * @name canvas\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @class Canvas\n * @classdesc A Canvas Wrapper for jsPDF\n */\n var Canvas = function() {\n var jsPdfInstance = undefined;\n Object.defineProperty(this, \"pdf\", {\n get: function() {\n return jsPdfInstance;\n },\n set: function(value) {\n jsPdfInstance = value;\n }\n });\n\n var _width = 150;\n /**\n * The height property is a positive integer reflecting the height HTML attribute of the element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 150 is used.\n * This is one of the two properties, the other being width, that controls the size of the canvas.\n *\n * @name width\n */\n Object.defineProperty(this, \"width\", {\n get: function() {\n return _width;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _width = 150;\n } else {\n _width = value;\n }\n if (this.getContext(\"2d\").pageWrapXEnabled) {\n this.getContext(\"2d\").pageWrapX = _width + 1;\n }\n }\n });\n\n var _height = 300;\n /**\n * The width property is a positive integer reflecting the width HTML attribute of the element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 300 is used.\n * This is one of the two properties, the other being height, that controls the size of the canvas.\n *\n * @name height\n */\n Object.defineProperty(this, \"height\", {\n get: function() {\n return _height;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _height = 300;\n } else {\n _height = value;\n }\n if (this.getContext(\"2d\").pageWrapYEnabled) {\n this.getContext(\"2d\").pageWrapY = _height + 1;\n }\n }\n });\n\n var _childNodes = [];\n Object.defineProperty(this, \"childNodes\", {\n get: function() {\n return _childNodes;\n },\n set: function(value) {\n _childNodes = value;\n }\n });\n\n var _style = {};\n Object.defineProperty(this, \"style\", {\n get: function() {\n return _style;\n },\n set: function(value) {\n _style = value;\n }\n });\n\n Object.defineProperty(this, \"parentNode\", {});\n };\n\n /**\n * The getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\n *\n * @name getContext\n * @function\n * @param {string} contextType Is a String containing the context identifier defining the drawing context associated to the canvas. Possible value is \"2d\", leading to the creation of a Context2D object representing a two-dimensional rendering context.\n * @param {object} contextAttributes\n */\n Canvas.prototype.getContext = function(contextType, contextAttributes) {\n contextType = contextType || \"2d\";\n var key;\n\n if (contextType !== \"2d\") {\n return null;\n }\n for (key in contextAttributes) {\n if (this.pdf.context2d.hasOwnProperty(key)) {\n this.pdf.context2d[key] = contextAttributes[key];\n }\n }\n this.pdf.context2d._canvas = this;\n return this.pdf.context2d;\n };\n\n /**\n * The toDataURL() method is just a stub to throw an error if accidently called.\n *\n * @name toDataURL\n * @function\n */\n Canvas.prototype.toDataURL = function() {\n throw new Error(\"toDataURL is not implemented.\");\n };\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n this.canvas = new Canvas();\n this.canvas.pdf = this;\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n * 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Hall, james@parall.ax\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name cell\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var NO_MARGINS = { left: 0, top: 0, bottom: 0, right: 0 };\n\n var px2pt = (0.264583 * 72) / 25.4;\n var printingHeaderRow = false;\n\n var _initialize = function() {\n if (typeof this.internal.__cell__ === \"undefined\") {\n this.internal.__cell__ = {};\n this.internal.__cell__.padding = 3;\n this.internal.__cell__.headerFunction = undefined;\n this.internal.__cell__.margins = Object.assign({}, NO_MARGINS);\n this.internal.__cell__.margins.width = this.getPageWidth();\n _reset.call(this);\n }\n };\n\n var _reset = function() {\n this.internal.__cell__.lastCell = new Cell();\n this.internal.__cell__.pages = 1;\n };\n\n var Cell = function() {\n var _x = arguments[0];\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n get: function() {\n return _x;\n },\n set: function(value) {\n _x = value;\n }\n });\n var _y = arguments[1];\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n get: function() {\n return _y;\n },\n set: function(value) {\n _y = value;\n }\n });\n var _width = arguments[2];\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n _width = value;\n }\n });\n var _height = arguments[3];\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n get: function() {\n return _height;\n },\n set: function(value) {\n _height = value;\n }\n });\n var _text = arguments[4];\n Object.defineProperty(this, \"text\", {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = value;\n }\n });\n var _lineNumber = arguments[5];\n Object.defineProperty(this, \"lineNumber\", {\n enumerable: true,\n get: function() {\n return _lineNumber;\n },\n set: function(value) {\n _lineNumber = value;\n }\n });\n var _align = arguments[6];\n Object.defineProperty(this, \"align\", {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n _align = value;\n }\n });\n\n return this;\n };\n\n Cell.prototype.clone = function() {\n return new Cell(\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n );\n };\n\n Cell.prototype.toArray = function() {\n return [\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n ];\n };\n\n /**\n * @name setHeaderFunction\n * @function\n * @param {function} func\n */\n jsPDFAPI.setHeaderFunction = function(func) {\n _initialize.call(this);\n this.internal.__cell__.headerFunction =\n typeof func === \"function\" ? func : undefined;\n return this;\n };\n\n /**\n * @name getTextDimensions\n * @function\n * @param {string} txt\n * @returns {Object} dimensions\n */\n jsPDFAPI.getTextDimensions = function(text, options) {\n _initialize.call(this);\n options = options || {};\n var fontSize = options.fontSize || this.getFontSize();\n var font = options.font || this.getFont();\n var scaleFactor = options.scaleFactor || this.internal.scaleFactor;\n var width = 0;\n var amountOfLines = 0;\n var height = 0;\n var tempWidth = 0;\n var scope = this;\n\n if (!Array.isArray(text) && typeof text !== \"string\") {\n if (typeof text === \"number\") {\n text = String(text);\n } else {\n throw new Error(\n \"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\"\n );\n }\n }\n\n const maxWidth = options.maxWidth;\n if (maxWidth > 0) {\n if (typeof text === \"string\") {\n text = this.splitTextToSize(text, maxWidth);\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\n text = text.reduce(function(acc, textLine) {\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\n }, []);\n }\n } else {\n // Without the else clause, it will not work if you do not pass along maxWidth\n text = Array.isArray(text) ? text : [text];\n }\n\n for (var i = 0; i < text.length; i++) {\n tempWidth = this.getStringUnitWidth(text[i], { font: font }) * fontSize;\n if (width < tempWidth) {\n width = tempWidth;\n }\n }\n\n if (width !== 0) {\n amountOfLines = text.length;\n }\n\n width = width / scaleFactor;\n height = Math.max(\n (amountOfLines * fontSize * this.getLineHeightFactor() -\n fontSize * (this.getLineHeightFactor() - 1)) /\n scaleFactor,\n 0\n );\n return { w: width, h: height };\n };\n\n /**\n * @name cellAddPage\n * @function\n */\n jsPDFAPI.cellAddPage = function() {\n _initialize.call(this);\n\n this.addPage();\n\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n this.internal.__cell__.lastCell = new Cell(\n margins.left,\n margins.top,\n undefined,\n undefined\n );\n this.internal.__cell__.pages += 1;\n\n return this;\n };\n\n /**\n * @name cell\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {string} text\n * @param {number} lineNumber lineNumber\n * @param {string} align\n * @return {jsPDF} jsPDF-instance\n */\n var cell = (jsPDFAPI.cell = function() {\n var currentCell;\n\n if (arguments[0] instanceof Cell) {\n currentCell = arguments[0];\n } else {\n currentCell = new Cell(\n arguments[0],\n arguments[1],\n arguments[2],\n arguments[3],\n arguments[4],\n arguments[5]\n );\n }\n _initialize.call(this);\n var lastCell = this.internal.__cell__.lastCell;\n var padding = this.internal.__cell__.padding;\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n var tableHeaderRow = this.internal.__cell__.tableHeaderRow;\n var printHeaders = this.internal.__cell__.printHeaders;\n // If this is not the first cell, we must change its position\n if (typeof lastCell.lineNumber !== \"undefined\") {\n if (lastCell.lineNumber === currentCell.lineNumber) {\n //Same line\n currentCell.x = (lastCell.x || 0) + (lastCell.width || 0);\n currentCell.y = lastCell.y || 0;\n } else {\n //New line\n if (\n lastCell.y + lastCell.height + currentCell.height + margins.bottom >\n this.getPageHeight()\n ) {\n this.cellAddPage();\n currentCell.y = margins.top;\n if (printHeaders && tableHeaderRow) {\n this.printHeaderRow(currentCell.lineNumber, true);\n currentCell.y += tableHeaderRow[0].height;\n }\n } else {\n currentCell.y = lastCell.y + lastCell.height || currentCell.y;\n }\n }\n }\n\n if (typeof currentCell.text[0] !== \"undefined\") {\n this.rect(\n currentCell.x,\n currentCell.y,\n currentCell.width,\n currentCell.height,\n printingHeaderRow === true ? \"FD\" : undefined\n );\n if (currentCell.align === \"right\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width - padding,\n currentCell.y + padding,\n { align: \"right\", baseline: \"top\" }\n );\n } else if (currentCell.align === \"center\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width / 2,\n currentCell.y + padding,\n {\n align: \"center\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n } else {\n this.text(\n currentCell.text,\n currentCell.x + padding,\n currentCell.y + padding,\n {\n align: \"left\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n }\n }\n this.internal.__cell__.lastCell = currentCell;\n return this;\n });\n\n /**\n * Create a table from a set of data.\n * @name table\n * @function\n * @param {Integer} [x] : left-position for top-left corner of table\n * @param {Integer} [y] top-position for top-left corner of table\n * @param {Object[]} [data] An array of objects containing key-value pairs corresponding to a row of data.\n * @param {String[]} [headers] Omit or null to auto-generate headers at a performance cost\n\n * @param {Object} [config.printHeaders] True to print column headers at the top of every page\n * @param {Object} [config.autoSize] True to dynamically set the column widths to match the widest cell value\n * @param {Object} [config.margins] margin values for left, top, bottom, and width\n * @param {Object} [config.fontSize] Integer fontSize to use (optional)\n * @param {Object} [config.padding] cell-padding in pt to use (optional)\n * @param {Object} [config.headerBackgroundColor] default is #c8c8c8 (optional)\n * @param {Object} [config.headerTextColor] default is #000 (optional)\n * @param {Object} [config.rowStart] callback to handle before print each row (optional)\n * @param {Object} [config.cellStart] callback to handle before print each cell (optional)\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.table = function(x, y, data, headers, config) {\n _initialize.call(this);\n if (!data) {\n throw new Error(\"No data for PDF table.\");\n }\n\n config = config || {};\n\n var headerNames = [],\n headerLabels = [],\n headerAligns = [],\n i,\n columnMatrix = {},\n columnWidths = {},\n column,\n columnMinWidths = [],\n j,\n tableHeaderConfigs = [],\n //set up defaults. If a value is provided in config, defaults will be overwritten:\n autoSize = config.autoSize || false,\n printHeaders = config.printHeaders === false ? false : true,\n fontSize =\n config.css && typeof config.css[\"font-size\"] !== \"undefined\"\n ? config.css[\"font-size\"] * 16\n : config.fontSize || 12,\n margins =\n config.margins ||\n Object.assign({ width: this.getPageWidth() }, NO_MARGINS),\n padding = typeof config.padding === \"number\" ? config.padding : 3,\n headerBackgroundColor = config.headerBackgroundColor || \"#c8c8c8\",\n headerTextColor = config.headerTextColor || \"#000\";\n\n _reset.call(this);\n\n this.internal.__cell__.printHeaders = printHeaders;\n this.internal.__cell__.margins = margins;\n this.internal.__cell__.table_font_size = fontSize;\n this.internal.__cell__.padding = padding;\n this.internal.__cell__.headerBackgroundColor = headerBackgroundColor;\n this.internal.__cell__.headerTextColor = headerTextColor;\n this.setFontSize(fontSize);\n\n // Set header values\n if (headers === undefined || headers === null) {\n // No headers defined so we derive from data\n headerNames = Object.keys(data[0]);\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n } else if (Array.isArray(headers) && typeof headers[0] === \"object\") {\n headerNames = headers.map(function(header) {\n return header.name;\n });\n headerLabels = headers.map(function(header) {\n return header.prompt || header.name || \"\";\n });\n headerAligns = headers.map(function(header) {\n return header.align || \"left\";\n });\n // Split header configs into names and prompts\n for (i = 0; i < headers.length; i += 1) {\n columnWidths[headers[i].name] = headers[i].width * px2pt;\n }\n } else if (Array.isArray(headers) && typeof headers[0] === \"string\") {\n headerNames = headers;\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n }\n\n if (\n autoSize ||\n (Array.isArray(headers) && typeof headers[0] === \"string\")\n ) {\n var headerName;\n for (i = 0; i < headerNames.length; i += 1) {\n headerName = headerNames[i];\n\n // Create a matrix of columns e.g., {column_title: [row1_Record, row2_Record]}\n\n columnMatrix[headerName] = data.map(function(rec) {\n return rec[headerName];\n });\n\n // get header width\n this.setFont(undefined, \"bold\");\n columnMinWidths.push(\n this.getTextDimensions(headerLabels[i], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n column = columnMatrix[headerName];\n\n // get cell widths\n this.setFont(undefined, \"normal\");\n for (j = 0; j < column.length; j += 1) {\n columnMinWidths.push(\n this.getTextDimensions(column[j], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n }\n\n // get final column width\n columnWidths[headerName] =\n Math.max.apply(null, columnMinWidths) + padding + padding;\n\n //have to reset\n columnMinWidths = [];\n }\n }\n\n // -- Construct the table\n\n if (printHeaders) {\n var row = {};\n for (i = 0; i < headerNames.length; i += 1) {\n row[headerNames[i]] = {};\n row[headerNames[i]].text = headerLabels[i];\n row[headerNames[i]].align = headerAligns[i];\n }\n\n var rowHeight = calculateLineHeight.call(this, row, columnWidths);\n\n // Construct the header row\n tableHeaderConfigs = headerNames.map(function(value) {\n return new Cell(\n x,\n y,\n columnWidths[value],\n rowHeight,\n row[value].text,\n undefined,\n row[value].align\n );\n });\n\n // Store the table header config\n this.setTableHeaderRow(tableHeaderConfigs);\n\n // Print the header for the start of the table\n this.printHeaderRow(1, false);\n }\n\n // Construct the data rows\n\n var align = headers.reduce(function(pv, cv) {\n pv[cv.name] = cv.align;\n return pv;\n }, {});\n for (i = 0; i < data.length; i += 1) {\n if (\"rowStart\" in config && config.rowStart instanceof Function) {\n config.rowStart(\n {\n row: i,\n data: data[i]\n },\n this\n );\n }\n var lineHeight = calculateLineHeight.call(this, data[i], columnWidths);\n\n for (j = 0; j < headerNames.length; j += 1) {\n var cellData = data[i][headerNames[j]];\n if (\"cellStart\" in config && config.cellStart instanceof Function) {\n config.cellStart(\n {\n row: i,\n col: j,\n data: cellData\n },\n this\n );\n }\n cell.call(\n this,\n new Cell(\n x,\n y,\n columnWidths[headerNames[j]],\n lineHeight,\n cellData,\n i + 2,\n align[headerNames[j]]\n )\n );\n }\n }\n this.internal.__cell__.table_x = x;\n this.internal.__cell__.table_y = y;\n return this;\n };\n\n /**\n * Calculate the height for containing the highest column\n *\n * @name calculateLineHeight\n * @function\n * @param {Object[]} model is the line of data we want to calculate the height of\n * @param {Integer[]} columnWidths is size of each column\n * @returns {number} lineHeight\n * @private\n */\n var calculateLineHeight = function calculateLineHeight(model, columnWidths) {\n var padding = this.internal.__cell__.padding;\n var fontSize = this.internal.__cell__.table_font_size;\n var scaleFactor = this.internal.scaleFactor;\n\n return Object.keys(model)\n .map(function(key) {\n var value = model[key];\n return this.splitTextToSize(\n value.hasOwnProperty(\"text\") ? value.text : value,\n columnWidths[key] - padding - padding\n );\n }, this)\n .map(function(value) {\n return (\n (this.getLineHeightFactor() * value.length * fontSize) / scaleFactor +\n padding +\n padding\n );\n }, this)\n .reduce(function(pv, cv) {\n return Math.max(pv, cv);\n }, 0);\n };\n\n /**\n * Store the config for outputting a table header\n *\n * @name setTableHeaderRow\n * @function\n * @param {Object[]} config\n * An array of cell configs that would define a header row: Each config matches the config used by jsPDFAPI.cell\n * except the lineNumber parameter is excluded\n */\n jsPDFAPI.setTableHeaderRow = function(config) {\n _initialize.call(this);\n this.internal.__cell__.tableHeaderRow = config;\n };\n\n /**\n * Output the store header row\n *\n * @name printHeaderRow\n * @function\n * @param {number} lineNumber The line number to output the header at\n * @param {boolean} new_page\n */\n jsPDFAPI.printHeaderRow = function(lineNumber, new_page) {\n _initialize.call(this);\n if (!this.internal.__cell__.tableHeaderRow) {\n throw new Error(\"Property tableHeaderRow does not exist.\");\n }\n\n var tableHeaderCell;\n\n printingHeaderRow = true;\n if (typeof this.internal.__cell__.headerFunction === \"function\") {\n var position = this.internal.__cell__.headerFunction(\n this,\n this.internal.__cell__.pages\n );\n this.internal.__cell__.lastCell = new Cell(\n position[0],\n position[1],\n position[2],\n position[3],\n undefined,\n -1\n );\n }\n this.setFont(undefined, \"bold\");\n\n var tempHeaderConf = [];\n for (var i = 0; i < this.internal.__cell__.tableHeaderRow.length; i += 1) {\n tableHeaderCell = this.internal.__cell__.tableHeaderRow[i].clone();\n if (new_page) {\n tableHeaderCell.y = this.internal.__cell__.margins.top || 0;\n tempHeaderConf.push(tableHeaderCell);\n }\n tableHeaderCell.lineNumber = lineNumber;\n var currentTextColor = this.getTextColor();\n this.setTextColor(this.internal.__cell__.headerTextColor);\n this.setFillColor(this.internal.__cell__.headerBackgroundColor);\n cell.call(this, tableHeaderCell);\n this.setTextColor(currentTextColor);\n }\n if (tempHeaderConf.length > 0) {\n this.setTableHeaderRow(tempHeaderConf);\n }\n this.setFont(undefined, \"normal\");\n printingHeaderRow = false;\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF JavaScript plugin\n *\n * @name javascript\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n var jsNamesObj, jsJsObj, text;\n /**\n * @name addJS\n * @function\n * @param {string} javascript The javascript to be embedded into the PDF-file.\n * @returns {jsPDF}\n */\n jsPDFAPI.addJS = function(javascript) {\n text = javascript;\n this.internal.events.subscribe(\"postPutResources\", function() {\n jsNamesObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/Names [(EmbeddedJS) \" + (jsNamesObj + 1) + \" 0 R]\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n\n jsJsObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /JavaScript\");\n this.internal.out(\"/JS (\" + text + \")\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n this.internal.events.subscribe(\"putCatalog\", function() {\n if (jsNamesObj !== undefined && jsJsObj !== undefined) {\n this.internal.out(\"/Names <>\");\n }\n });\n return this;\n };\n})(jsPDF.API);\n","/* eslint-disable no-fallthrough */\r\n/* eslint-disable no-console */\r\n/**\r\n * @license\r\n * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\r\n *\r\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\r\n */\r\n\r\nimport { jsPDF } from \"../jspdf.js\";\r\nimport { RGBColor } from \"../libs/rgbcolor.js\";\r\nimport { console } from \"../libs/console.js\";\r\nimport {\r\n buildFontFaceMap,\r\n parseFontFamily,\r\n resolveFontFace\r\n} from \"../libs/fontFace.js\";\r\n\r\n/**\r\n * This plugin mimics the HTML5 CanvasRenderingContext2D.\r\n *\r\n * The goal is to provide a way for current canvas implementations to print directly to a PDF.\r\n *\r\n * @name context2d\r\n * @module\r\n */\r\n(function(jsPDFAPI) {\r\n \"use strict\";\r\n var ContextLayer = function(ctx) {\r\n ctx = ctx || {};\r\n this.isStrokeTransparent = ctx.isStrokeTransparent || false;\r\n this.strokeOpacity = ctx.strokeOpacity || 1;\r\n this.strokeStyle = ctx.strokeStyle || \"#000000\";\r\n this.fillStyle = ctx.fillStyle || \"#000000\";\r\n this.isFillTransparent = ctx.isFillTransparent || false;\r\n this.fillOpacity = ctx.fillOpacity || 1;\r\n this.font = ctx.font || \"10px sans-serif\";\r\n this.textBaseline = ctx.textBaseline || \"alphabetic\";\r\n this.textAlign = ctx.textAlign || \"left\";\r\n this.lineWidth = ctx.lineWidth || 1;\r\n this.lineJoin = ctx.lineJoin || \"miter\";\r\n this.lineCap = ctx.lineCap || \"butt\";\r\n this.path = ctx.path || [];\r\n this.transform =\r\n typeof ctx.transform !== \"undefined\"\r\n ? ctx.transform.clone()\r\n : new Matrix();\r\n this.globalCompositeOperation = ctx.globalCompositeOperation || \"normal\";\r\n this.globalAlpha = ctx.globalAlpha || 1.0;\r\n this.clip_path = ctx.clip_path || [];\r\n this.currentPoint = ctx.currentPoint || new Point();\r\n this.miterLimit = ctx.miterLimit || 10.0;\r\n this.lastPoint = ctx.lastPoint || new Point();\r\n this.lineDashOffset = ctx.lineDashOffset || 0.0;\r\n this.lineDash = ctx.lineDash || [];\r\n this.margin = ctx.margin || [0, 0, 0, 0];\r\n this.prevPageLastElemOffset = ctx.prevPageLastElemOffset || 0;\r\n\r\n this.ignoreClearRect =\r\n typeof ctx.ignoreClearRect === \"boolean\" ? ctx.ignoreClearRect : true;\r\n return this;\r\n };\r\n\r\n //stub\r\n var f2,\r\n getHorizontalCoordinateString,\r\n getVerticalCoordinateString,\r\n getHorizontalCoordinate,\r\n getVerticalCoordinate,\r\n Point,\r\n Rectangle,\r\n Matrix,\r\n _ctx;\r\n jsPDFAPI.events.push([\r\n \"initialized\",\r\n function() {\r\n this.context2d = new Context2D(this);\r\n\r\n f2 = this.internal.f2;\r\n getHorizontalCoordinateString = this.internal.getCoordinateString;\r\n getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\r\n getHorizontalCoordinate = this.internal.getHorizontalCoordinate;\r\n getVerticalCoordinate = this.internal.getVerticalCoordinate;\r\n Point = this.internal.Point;\r\n Rectangle = this.internal.Rectangle;\r\n Matrix = this.internal.Matrix;\r\n _ctx = new ContextLayer();\r\n }\r\n ]);\r\n\r\n var Context2D = function(pdf) {\r\n Object.defineProperty(this, \"canvas\", {\r\n get: function() {\r\n return { parentNode: false, style: false };\r\n }\r\n });\r\n\r\n var _pdf = pdf;\r\n Object.defineProperty(this, \"pdf\", {\r\n get: function() {\r\n return _pdf;\r\n }\r\n });\r\n\r\n var _pageWrapXEnabled = false;\r\n /**\r\n * @name pageWrapXEnabled\r\n * @type {boolean}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"pageWrapXEnabled\", {\r\n get: function() {\r\n return _pageWrapXEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapXEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _pageWrapYEnabled = false;\r\n /**\r\n * @name pageWrapYEnabled\r\n * @type {boolean}\r\n * @default true\r\n */\r\n Object.defineProperty(this, \"pageWrapYEnabled\", {\r\n get: function() {\r\n return _pageWrapYEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapYEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _posX = 0;\r\n /**\r\n * @name posX\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posX\", {\r\n get: function() {\r\n return _posX;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posX = value;\r\n }\r\n }\r\n });\r\n\r\n var _posY = 0;\r\n /**\r\n * @name posY\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posY\", {\r\n get: function() {\r\n return _posY;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posY = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Gets or sets the page margin when using auto paging. Has no effect when {@link autoPaging} is off.\r\n * @name margin\r\n * @type {number|number[]}\r\n * @default [0, 0, 0, 0]\r\n */\r\n Object.defineProperty(this, \"margin\", {\r\n get: function() {\r\n return _ctx.margin;\r\n },\r\n set: function(value) {\r\n var margin;\r\n if (typeof value === \"number\") {\r\n margin = [value, value, value, value];\r\n } else {\r\n margin = new Array(4);\r\n margin[0] = value[0];\r\n margin[1] = value.length >= 2 ? value[1] : margin[0];\r\n margin[2] = value.length >= 3 ? value[2] : margin[0];\r\n margin[3] = value.length >= 4 ? value[3] : margin[1];\r\n }\r\n _ctx.margin = margin;\r\n }\r\n });\r\n\r\n var _autoPaging = false;\r\n /**\r\n * Gets or sets the auto paging mode. When auto paging is enabled, the context2d will automatically draw on the\r\n * next page if a shape or text chunk doesn't fit entirely on the current page. The context2d will create new\r\n * pages if required.\r\n *\r\n * Context2d supports different modes:\r\n *
      \r\n *
    • \r\n * false: Auto paging is disabled.\r\n *
    • \r\n *
    • \r\n * true or 'slice': Will cut shapes or text chunks across page breaks. Will possibly\r\n * slice text in half, making it difficult to read.\r\n *
    • \r\n *
    • \r\n * 'text': Trys not to cut text in half across page breaks. Works best for documents consisting\r\n * mostly of a single column of text.\r\n *
    • \r\n *
    \r\n * @name Context2D#autoPaging\r\n * @type {boolean|\"slice\"|\"text\"}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"autoPaging\", {\r\n get: function() {\r\n return _autoPaging;\r\n },\r\n set: function(value) {\r\n _autoPaging = value;\r\n }\r\n });\r\n\r\n var lastBreak = 0;\r\n /**\r\n * @name lastBreak\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"lastBreak\", {\r\n get: function() {\r\n return lastBreak;\r\n },\r\n set: function(value) {\r\n lastBreak = value;\r\n }\r\n });\r\n\r\n var pageBreaks = [];\r\n /**\r\n * Y Position of page breaks.\r\n * @name pageBreaks\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"pageBreaks\", {\r\n get: function() {\r\n return pageBreaks;\r\n },\r\n set: function(value) {\r\n pageBreaks = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctx\r\n * @type {object}\r\n * @default {}\r\n */\r\n Object.defineProperty(this, \"ctx\", {\r\n get: function() {\r\n return _ctx;\r\n },\r\n set: function(value) {\r\n if (value instanceof ContextLayer) {\r\n _ctx = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * @name path\r\n * @type {array}\r\n * @default []\r\n */\r\n Object.defineProperty(this, \"path\", {\r\n get: function() {\r\n return _ctx.path;\r\n },\r\n set: function(value) {\r\n _ctx.path = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctxStack\r\n * @type {array}\r\n * @default []\r\n */\r\n var _ctxStack = [];\r\n Object.defineProperty(this, \"ctxStack\", {\r\n get: function() {\r\n return _ctxStack;\r\n },\r\n set: function(value) {\r\n _ctxStack = value;\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used to fill the drawing\r\n *\r\n * @name fillStyle\r\n * @default #000000\r\n * @property {(color|gradient|pattern)} value The color of the drawing. Default value is #000000
    \r\n * A gradient object (linear or radial) used to fill the drawing (not supported by context2d)
    \r\n * A pattern object to use to fill the drawing (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"fillStyle\", {\r\n get: function() {\r\n return this.ctx.fillStyle;\r\n },\r\n set: function(value) {\r\n var rgba;\r\n rgba = getRGBA(value);\r\n\r\n this.ctx.fillStyle = rgba.style;\r\n this.ctx.isFillTransparent = rgba.a === 0;\r\n this.ctx.fillOpacity = rgba.a;\r\n\r\n this.pdf.setFillColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n this.pdf.setTextColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used for strokes\r\n *\r\n * @name strokeStyle\r\n * @default #000000\r\n * @property {color} color A CSS color value that indicates the stroke color of the drawing. Default value is #000000 (not supported by context2d)\r\n * @property {gradient} gradient A gradient object (linear or radial) used to create a gradient stroke (not supported by context2d)\r\n * @property {pattern} pattern A pattern object used to create a pattern stroke (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"strokeStyle\", {\r\n get: function() {\r\n return this.ctx.strokeStyle;\r\n },\r\n set: function(value) {\r\n var rgba = getRGBA(value);\r\n\r\n this.ctx.strokeStyle = rgba.style;\r\n this.ctx.isStrokeTransparent = rgba.a === 0;\r\n this.ctx.strokeOpacity = rgba.a;\r\n\r\n if (rgba.a === 0) {\r\n this.pdf.setDrawColor(255, 255, 255);\r\n } else if (rgba.a === 1) {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n } else {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the style of the end caps for a line\r\n *\r\n * @name lineCap\r\n * @default butt\r\n * @property {(butt|round|square)} lineCap butt A flat edge is added to each end of the line
    \r\n * round A rounded end cap is added to each end of the line
    \r\n * square A square end cap is added to each end of the line
    \r\n */\r\n Object.defineProperty(this, \"lineCap\", {\r\n get: function() {\r\n return this.ctx.lineCap;\r\n },\r\n set: function(value) {\r\n if ([\"butt\", \"round\", \"square\"].indexOf(value) !== -1) {\r\n this.ctx.lineCap = value;\r\n this.pdf.setLineCap(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the current line width\r\n *\r\n * @name lineWidth\r\n * @default 1\r\n * @property {number} lineWidth The current line width, in pixels\r\n */\r\n Object.defineProperty(this, \"lineWidth\", {\r\n get: function() {\r\n return this.ctx.lineWidth;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.lineWidth = value;\r\n this.pdf.setLineWidth(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the type of corner created, when two lines meet\r\n */\r\n Object.defineProperty(this, \"lineJoin\", {\r\n get: function() {\r\n return this.ctx.lineJoin;\r\n },\r\n set: function(value) {\r\n if ([\"bevel\", \"round\", \"miter\"].indexOf(value) !== -1) {\r\n this.ctx.lineJoin = value;\r\n this.pdf.setLineJoin(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * A number specifying the miter limit ratio in coordinate space units. Zero, negative, Infinity, and NaN values are ignored. The default value is 10.0.\r\n *\r\n * @name miterLimit\r\n * @default 10\r\n */\r\n Object.defineProperty(this, \"miterLimit\", {\r\n get: function() {\r\n return this.ctx.miterLimit;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.miterLimit = value;\r\n this.pdf.setMiterLimit(value);\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textBaseline\", {\r\n get: function() {\r\n return this.ctx.textBaseline;\r\n },\r\n set: function(value) {\r\n this.ctx.textBaseline = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textAlign\", {\r\n get: function() {\r\n return this.ctx.textAlign;\r\n },\r\n set: function(value) {\r\n if ([\"right\", \"end\", \"center\", \"left\", \"start\"].indexOf(value) !== -1) {\r\n this.ctx.textAlign = value;\r\n }\r\n }\r\n });\r\n\r\n var _fontFaceMap = null;\r\n\r\n function getFontFaceMap(pdf, fontFaces) {\r\n if (_fontFaceMap === null) {\r\n var fontMap = pdf.getFontList();\r\n\r\n var convertedFontFaces = convertToFontFaces(fontMap);\r\n\r\n _fontFaceMap = buildFontFaceMap(convertedFontFaces.concat(fontFaces));\r\n }\r\n\r\n return _fontFaceMap;\r\n }\r\n\r\n function convertToFontFaces(fontMap) {\r\n var fontFaces = [];\r\n\r\n Object.keys(fontMap).forEach(function(family) {\r\n var styles = fontMap[family];\r\n\r\n styles.forEach(function(style) {\r\n var fontFace = null;\r\n\r\n switch (style) {\r\n case \"bold\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\"\r\n };\r\n break;\r\n\r\n case \"italic\":\r\n fontFace = {\r\n family: family,\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"bolditalic\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\",\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"\":\r\n case \"normal\":\r\n fontFace = {\r\n family: family\r\n };\r\n break;\r\n }\r\n\r\n // If font-face is still null here, it is a font with some styling we don't recognize and\r\n // cannot map or it is a font added via the fontFaces option of .html().\r\n if (fontFace !== null) {\r\n fontFace.ref = {\r\n name: family,\r\n style: style\r\n };\r\n\r\n fontFaces.push(fontFace);\r\n }\r\n });\r\n });\r\n\r\n return fontFaces;\r\n }\r\n\r\n var _fontFaces = null;\r\n /**\r\n * A map of available font-faces, as passed in the options of\r\n * .html(). If set a limited implementation of the font style matching\r\n * algorithm defined by https://www.w3.org/TR/css-fonts-3/#font-matching-algorithm\r\n * will be used. If not set it will fallback to previous behavior.\r\n */\r\n\r\n Object.defineProperty(this, \"fontFaces\", {\r\n get: function() {\r\n return _fontFaces;\r\n },\r\n set: function(value) {\r\n _fontFaceMap = null;\r\n _fontFaces = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"font\", {\r\n get: function() {\r\n return this.ctx.font;\r\n },\r\n set: function(value) {\r\n this.ctx.font = value;\r\n var rx, matches;\r\n\r\n //source: https://stackoverflow.com/a/10136041\r\n // eslint-disable-next-line no-useless-escape\r\n rx = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z]+?)\\s*$/i;\r\n matches = rx.exec(value);\r\n if (matches !== null) {\r\n var fontStyle = matches[1];\r\n var fontVariant = matches[2];\r\n var fontWeight = matches[3];\r\n var fontSize = matches[4];\r\n var lineHeight = matches[5];\r\n var fontFamily = matches[6];\r\n } else {\r\n return;\r\n }\r\n var rxFontSize = /^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i;\r\n var fontSizeUnit = rxFontSize.exec(fontSize)[2];\r\n\r\n if (\"px\" === fontSizeUnit) {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n } else if (\"em\" === fontSizeUnit) {\r\n fontSize = Math.floor(parseFloat(fontSize) * this.pdf.getFontSize());\r\n } else {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n }\r\n\r\n this.pdf.setFontSize(fontSize);\r\n var parts = parseFontFamily(fontFamily);\r\n\r\n if (this.fontFaces) {\r\n var fontFaceMap = getFontFaceMap(this.pdf, this.fontFaces);\r\n\r\n var rules = parts.map(function(ff) {\r\n return {\r\n family: ff,\r\n stretch: \"normal\", // TODO: Extract font-stretch from font rule (perhaps write proper parser for it?)\r\n weight: fontWeight,\r\n style: fontStyle\r\n };\r\n });\r\n\r\n var font = resolveFontFace(fontFaceMap, rules);\r\n this.pdf.setFont(font.ref.name, font.ref.style);\r\n return;\r\n }\r\n\r\n var style = \"\";\r\n if (\r\n fontWeight === \"bold\" ||\r\n parseInt(fontWeight, 10) >= 700 ||\r\n fontStyle === \"bold\"\r\n ) {\r\n style = \"bold\";\r\n }\r\n\r\n if (fontStyle === \"italic\") {\r\n style += \"italic\";\r\n }\r\n\r\n if (style.length === 0) {\r\n style = \"normal\";\r\n }\r\n var jsPdfFontName = \"\";\r\n\r\n var fallbackFonts = {\r\n arial: \"Helvetica\",\r\n Arial: \"Helvetica\",\r\n verdana: \"Helvetica\",\r\n Verdana: \"Helvetica\",\r\n helvetica: \"Helvetica\",\r\n Helvetica: \"Helvetica\",\r\n \"sans-serif\": \"Helvetica\",\r\n fixed: \"Courier\",\r\n monospace: \"Courier\",\r\n terminal: \"Courier\",\r\n cursive: \"Times\",\r\n fantasy: \"Times\",\r\n serif: \"Times\"\r\n };\r\n\r\n for (var i = 0; i < parts.length; i++) {\r\n if (\r\n this.pdf.internal.getFont(parts[i], style, {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n break;\r\n } else if (\r\n style === \"bolditalic\" &&\r\n this.pdf.internal.getFont(parts[i], \"bold\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"bold\";\r\n } else if (\r\n this.pdf.internal.getFont(parts[i], \"normal\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"normal\";\r\n break;\r\n }\r\n }\r\n if (jsPdfFontName === \"\") {\r\n for (var j = 0; j < parts.length; j++) {\r\n if (fallbackFonts[parts[j]]) {\r\n jsPdfFontName = fallbackFonts[parts[j]];\r\n break;\r\n }\r\n }\r\n }\r\n jsPdfFontName = jsPdfFontName === \"\" ? \"Times\" : jsPdfFontName;\r\n this.pdf.setFont(jsPdfFontName, style);\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalCompositeOperation\", {\r\n get: function() {\r\n return this.ctx.globalCompositeOperation;\r\n },\r\n set: function(value) {\r\n this.ctx.globalCompositeOperation = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalAlpha\", {\r\n get: function() {\r\n return this.ctx.globalAlpha;\r\n },\r\n set: function(value) {\r\n this.ctx.globalAlpha = value;\r\n }\r\n });\r\n\r\n /**\r\n * A float specifying the amount of the line dash offset. The default value is 0.0.\r\n *\r\n * @name lineDashOffset\r\n * @default 0.0\r\n */\r\n Object.defineProperty(this, \"lineDashOffset\", {\r\n get: function() {\r\n return this.ctx.lineDashOffset;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDashOffset = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"lineDash\", {\r\n get: function() {\r\n return this.ctx.lineDash;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDash = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"ignoreClearRect\", {\r\n get: function() {\r\n return this.ctx.ignoreClearRect;\r\n },\r\n set: function(value) {\r\n this.ctx.ignoreClearRect = Boolean(value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Sets the line dash pattern used when stroking lines.\r\n * @name setLineDash\r\n * @function\r\n * @description It uses an array of values that specify alternating lengths of lines and gaps which describe the pattern.\r\n */\r\n Context2D.prototype.setLineDash = function(dashArray) {\r\n this.lineDash = dashArray;\r\n };\r\n\r\n /**\r\n * gets the current line dash pattern.\r\n * @name getLineDash\r\n * @function\r\n * @returns {Array} An Array of numbers that specify distances to alternately draw a line and a gap (in coordinate space units). If the number, when setting the elements, is odd, the elements of the array get copied and concatenated. For example, setting the line dash to [5, 15, 25] will result in getting back [5, 15, 25, 5, 15, 25].\r\n */\r\n Context2D.prototype.getLineDash = function() {\r\n if (this.lineDash.length % 2) {\r\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getLineDash#return_value\r\n return this.lineDash.concat(this.lineDash);\r\n } else {\r\n // The copied value is returned to prevent contamination from outside.\r\n return this.lineDash.slice();\r\n }\r\n };\r\n\r\n Context2D.prototype.fill = function() {\r\n pathPreProcess.call(this, \"fill\", false);\r\n };\r\n\r\n /**\r\n * Actually draws the path you have defined\r\n *\r\n * @name stroke\r\n * @function\r\n * @description The stroke() method actually draws the path you have defined with all those moveTo() and lineTo() methods. The default color is black.\r\n */\r\n Context2D.prototype.stroke = function() {\r\n pathPreProcess.call(this, \"stroke\", false);\r\n };\r\n\r\n /**\r\n * Begins a path, or resets the current\r\n *\r\n * @name beginPath\r\n * @function\r\n * @description The beginPath() method begins a path, or resets the current path.\r\n */\r\n Context2D.prototype.beginPath = function() {\r\n this.path = [\r\n {\r\n type: \"begin\"\r\n }\r\n ];\r\n };\r\n\r\n /**\r\n * Moves the path to the specified point in the canvas, without creating a line\r\n *\r\n * @name moveTo\r\n * @function\r\n * @param x {Number} The x-coordinate of where to move the path to\r\n * @param y {Number} The y-coordinate of where to move the path to\r\n */\r\n Context2D.prototype.moveTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.moveTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"mt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(x, y);\r\n };\r\n\r\n /**\r\n * Creates a path from the current point back to the starting point\r\n *\r\n * @name closePath\r\n * @function\r\n * @description The closePath() method creates a path from the current point back to the starting point.\r\n */\r\n Context2D.prototype.closePath = function() {\r\n var pathBegin = new Point(0, 0);\r\n var i = 0;\r\n for (i = this.path.length - 1; i !== -1; i--) {\r\n if (this.path[i].type === \"begin\") {\r\n if (\r\n typeof this.path[i + 1] === \"object\" &&\r\n typeof this.path[i + 1].x === \"number\"\r\n ) {\r\n pathBegin = new Point(this.path[i + 1].x, this.path[i + 1].y);\r\n break;\r\n }\r\n }\r\n }\r\n this.path.push({\r\n type: \"close\"\r\n });\r\n this.ctx.lastPoint = new Point(pathBegin.x, pathBegin.y);\r\n };\r\n\r\n /**\r\n * Adds a new point and creates a line to that point from the last specified point in the canvas\r\n *\r\n * @name lineTo\r\n * @function\r\n * @param x The x-coordinate of where to create the line to\r\n * @param y The y-coordinate of where to create the line to\r\n * @description The lineTo() method adds a new point and creates a line TO that point FROM the last specified point in the canvas (this method does not draw the line).\r\n */\r\n Context2D.prototype.lineTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.lineTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"lt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(pt.x, pt.y);\r\n };\r\n\r\n /**\r\n * Clips a region of any shape and size from the original canvas\r\n *\r\n * @name clip\r\n * @function\r\n * @description The clip() method clips a region of any shape and size from the original canvas.\r\n */\r\n Context2D.prototype.clip = function() {\r\n this.ctx.clip_path = JSON.parse(JSON.stringify(this.path));\r\n pathPreProcess.call(this, null, true);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name quadraticCurveTo\r\n * @function\r\n * @param cpx {Number} The x-coordinate of the Bézier control point\r\n * @param cpy {Number} The y-coordinate of the Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The quadraticCurveTo() method adds a point to the current path by using the specified control points that represent a quadratic Bézier curve.

    A quadratic Bézier curve requires two points. The first point is a control point that is used in the quadratic Bézier calculation and the second point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y) {\r\n if (isNaN(x) || isNaN(y) || isNaN(cpx) || isNaN(cpy)) {\r\n console.error(\r\n \"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\"\r\n );\r\n }\r\n\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cpx, cpy));\r\n\r\n this.path.push({\r\n type: \"qct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name bezierCurveTo\r\n * @function\r\n * @param cp1x {Number} The x-coordinate of the first Bézier control point\r\n * @param cp1y {Number} The y-coordinate of the first Bézier control point\r\n * @param cp2x {Number} The x-coordinate of the second Bézier control point\r\n * @param cp2y {Number} The y-coordinate of the second Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The bezierCurveTo() method adds a point to the current path by using the specified control points that represent a cubic Bézier curve.

    A cubic bezier curve requires three points. The first two points are control points that are used in the cubic Bézier calculation and the last point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(cp1x) ||\r\n isNaN(cp1y) ||\r\n isNaN(cp2x) ||\r\n isNaN(cp2y)\r\n ) {\r\n console.error(\r\n \"jsPDF.context2d.bezierCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\"\r\n );\r\n }\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cp1x, cp1y));\r\n var pt2 = this.ctx.transform.applyToPoint(new Point(cp2x, cp2y));\r\n\r\n this.path.push({\r\n type: \"bct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x2: pt2.x,\r\n y2: pt2.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates an arc/curve (used to create circles, or parts of circles)\r\n *\r\n * @name arc\r\n * @function\r\n * @param x {Number} The x-coordinate of the center of the circle\r\n * @param y {Number} The y-coordinate of the center of the circle\r\n * @param radius {Number} The radius of the circle\r\n * @param startAngle {Number} The starting angle, in radians (0 is at the 3 o'clock position of the arc's circle)\r\n * @param endAngle {Number} The ending angle, in radians\r\n * @param counterclockwise {Boolean} Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise.\r\n * @description The arc() method creates an arc/curve (used to create circles, or parts of circles).\r\n */\r\n Context2D.prototype.arc = function(\r\n x,\r\n y,\r\n radius,\r\n startAngle,\r\n endAngle,\r\n counterclockwise\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(radius) ||\r\n isNaN(startAngle) ||\r\n isNaN(endAngle)\r\n ) {\r\n console.error(\"jsPDF.context2d.arc: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");\r\n }\r\n counterclockwise = Boolean(counterclockwise);\r\n\r\n if (!this.ctx.transform.isIdentity) {\r\n var xpt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n x = xpt.x;\r\n y = xpt.y;\r\n\r\n var x_radPt = this.ctx.transform.applyToPoint(new Point(0, radius));\r\n var x_radPt0 = this.ctx.transform.applyToPoint(new Point(0, 0));\r\n radius = Math.sqrt(\r\n Math.pow(x_radPt.x - x_radPt0.x, 2) +\r\n Math.pow(x_radPt.y - x_radPt0.y, 2)\r\n );\r\n }\r\n if (Math.abs(endAngle - startAngle) >= 2 * Math.PI) {\r\n startAngle = 0;\r\n endAngle = 2 * Math.PI;\r\n }\r\n\r\n this.path.push({\r\n type: \"arc\",\r\n x: x,\r\n y: y,\r\n radius: radius,\r\n startAngle: startAngle,\r\n endAngle: endAngle,\r\n counterclockwise: counterclockwise\r\n });\r\n // this.ctx.lastPoint(new Point(pt.x,pt.y));\r\n };\r\n\r\n /**\r\n * Creates an arc/curve between two tangents\r\n *\r\n * @name arcTo\r\n * @function\r\n * @param x1 {Number} The x-coordinate of the first tangent\r\n * @param y1 {Number} The y-coordinate of the first tangent\r\n * @param x2 {Number} The x-coordinate of the second tangent\r\n * @param y2 {Number} The y-coordinate of the second tangent\r\n * @param radius The radius of the arc\r\n * @description The arcTo() method creates an arc/curve between two tangents on the canvas.\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n Context2D.prototype.arcTo = function(x1, y1, x2, y2, radius) {\r\n throw new Error(\"arcTo not implemented.\");\r\n };\r\n\r\n /**\r\n * Creates a rectangle\r\n *\r\n * @name rect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The rect() method creates a rectangle.\r\n */\r\n Context2D.prototype.rect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.rect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");\r\n }\r\n this.moveTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x + w, y + h);\r\n this.lineTo(x, y + h);\r\n this.lineTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x, y);\r\n };\r\n\r\n /**\r\n * Draws a \"filled\" rectangle\r\n *\r\n * @name fillRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The fillRect() method draws a \"filled\" rectangle. The default color of the fill is black.\r\n */\r\n Context2D.prototype.fillRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.fillRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");\r\n }\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n var tmp = {};\r\n if (this.lineCap !== \"butt\") {\r\n tmp.lineCap = this.lineCap;\r\n this.lineCap = \"butt\";\r\n }\r\n if (this.lineJoin !== \"miter\") {\r\n tmp.lineJoin = this.lineJoin;\r\n this.lineJoin = \"miter\";\r\n }\r\n\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.fill();\r\n\r\n if (tmp.hasOwnProperty(\"lineCap\")) {\r\n this.lineCap = tmp.lineCap;\r\n }\r\n if (tmp.hasOwnProperty(\"lineJoin\")) {\r\n this.lineJoin = tmp.lineJoin;\r\n }\r\n };\r\n\r\n /**\r\n * Draws a rectangle (no fill)\r\n *\r\n * @name strokeRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The strokeRect() method draws a rectangle (no fill). The default color of the stroke is black.\r\n */\r\n Context2D.prototype.strokeRect = function strokeRect(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.stroke();\r\n };\r\n\r\n /**\r\n * Clears the specified pixels within a given rectangle\r\n *\r\n * @name clearRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle to clear, in pixels\r\n * @param h {Number} The height of the rectangle to clear, in pixels\r\n * @description We cannot clear PDF commands that were already written to PDF, so we use white instead.
    \r\n * As a special case, read a special flag (ignoreClearRect) and do nothing if it is set.\r\n * This results in all calls to clearRect() to do nothing, and keep the canvas transparent.\r\n * This flag is stored in the save/restore context and is managed the same way as other drawing states.\r\n *\r\n */\r\n Context2D.prototype.clearRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.clearRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");\r\n }\r\n if (this.ignoreClearRect) {\r\n return;\r\n }\r\n\r\n this.fillStyle = \"#ffffff\";\r\n this.fillRect(x, y, w, h);\r\n };\r\n\r\n /**\r\n * Saves the state of the current context\r\n *\r\n * @name save\r\n * @function\r\n */\r\n Context2D.prototype.save = function(doStackPush) {\r\n doStackPush = typeof doStackPush === \"boolean\" ? doStackPush : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPush) {\r\n this.ctx.fontSize = this.pdf.internal.getFontSize();\r\n var ctx = new ContextLayer(this.ctx);\r\n this.ctxStack.push(this.ctx);\r\n this.ctx = ctx;\r\n }\r\n };\r\n\r\n /**\r\n * Returns previously saved path state and attributes\r\n *\r\n * @name restore\r\n * @function\r\n */\r\n Context2D.prototype.restore = function(doStackPop) {\r\n doStackPop = typeof doStackPop === \"boolean\" ? doStackPop : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"Q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPop && this.ctxStack.length !== 0) {\r\n this.ctx = this.ctxStack.pop();\r\n this.fillStyle = this.ctx.fillStyle;\r\n this.strokeStyle = this.ctx.strokeStyle;\r\n this.font = this.ctx.font;\r\n this.lineCap = this.ctx.lineCap;\r\n this.lineWidth = this.ctx.lineWidth;\r\n this.lineJoin = this.ctx.lineJoin;\r\n this.lineDash = this.ctx.lineDash;\r\n this.lineDashOffset = this.ctx.lineDashOffset;\r\n }\r\n };\r\n\r\n /**\r\n * @name toDataURL\r\n * @function\r\n */\r\n Context2D.prototype.toDataURL = function() {\r\n throw new Error(\"toDataUrl not implemented.\");\r\n };\r\n\r\n //helper functions\r\n\r\n /**\r\n * Get the decimal values of r, g, b and a\r\n *\r\n * @name getRGBA\r\n * @function\r\n * @private\r\n * @ignore\r\n */\r\n var getRGBA = function(style) {\r\n var rxRgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\r\n var rxRgba = /rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\r\n var rxTransparent = /transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/;\r\n\r\n var r, g, b, a;\r\n\r\n if (style.isCanvasGradient === true) {\r\n style = style.getColor();\r\n }\r\n\r\n if (!style) {\r\n return { r: 0, g: 0, b: 0, a: 0, style: style };\r\n }\r\n\r\n if (rxTransparent.test(style)) {\r\n r = 0;\r\n g = 0;\r\n b = 0;\r\n a = 0;\r\n } else {\r\n var matches = rxRgb.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = 1;\r\n } else {\r\n matches = rxRgba.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = parseFloat(matches[4]);\r\n } else {\r\n a = 1;\r\n\r\n if (typeof style === \"string\" && style.charAt(0) !== \"#\") {\r\n var rgbColor = new RGBColor(style);\r\n if (rgbColor.ok) {\r\n style = rgbColor.toHex();\r\n } else {\r\n style = \"#000000\";\r\n }\r\n }\r\n\r\n if (style.length === 4) {\r\n r = style.substring(1, 2);\r\n r += r;\r\n g = style.substring(2, 3);\r\n g += g;\r\n b = style.substring(3, 4);\r\n b += b;\r\n } else {\r\n r = style.substring(1, 3);\r\n g = style.substring(3, 5);\r\n b = style.substring(5, 7);\r\n }\r\n r = parseInt(r, 16);\r\n g = parseInt(g, 16);\r\n b = parseInt(b, 16);\r\n }\r\n }\r\n }\r\n return { r: r, g: g, b: b, a: a, style: style };\r\n };\r\n\r\n /**\r\n * @name isFillTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isFillTransparent = function() {\r\n return this.ctx.isFillTransparent || this.globalAlpha == 0;\r\n };\r\n\r\n /**\r\n * @name isStrokeTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isStrokeTransparent = function() {\r\n return Boolean(this.ctx.isStrokeTransparent || this.globalAlpha == 0);\r\n };\r\n\r\n /**\r\n * Draws \"filled\" text on the canvas\r\n *\r\n * @name fillText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The fillText() method draws filled text on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.fillText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.fillText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");\r\n }\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n\r\n // We only use X axis as scale hint\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Draws text on the canvas (no fill)\r\n *\r\n * @name strokeText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The strokeText() method draws text (with no fill) on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.strokeText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.strokeText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n renderingMode: \"stroke\",\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Returns an object that contains the width of the specified text\r\n *\r\n * @name measureText\r\n * @function\r\n * @param text {String} The text to be measured\r\n * @description The measureText() method returns an object that contains the width of the specified text, in pixels.\r\n * @returns {Number}\r\n */\r\n Context2D.prototype.measureText = function(text) {\r\n if (typeof text !== \"string\") {\r\n console.error(\r\n \"jsPDF.context2d.measureText: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.measureText\"\r\n );\r\n }\r\n var pdf = this.pdf;\r\n var k = this.pdf.internal.scaleFactor;\r\n\r\n var fontSize = pdf.internal.getFontSize();\r\n var txtWidth =\r\n (pdf.getStringUnitWidth(text) * fontSize) / pdf.internal.scaleFactor;\r\n txtWidth *= Math.round(((k * 96) / 72) * 10000) / 10000;\r\n\r\n var TextMetrics = function(options) {\r\n options = options || {};\r\n var _width = options.width || 0;\r\n Object.defineProperty(this, \"width\", {\r\n get: function() {\r\n return _width;\r\n }\r\n });\r\n return this;\r\n };\r\n return new TextMetrics({ width: txtWidth });\r\n };\r\n\r\n //Transformations\r\n\r\n /**\r\n * Scales the current drawing bigger or smaller\r\n *\r\n * @name scale\r\n * @function\r\n * @param scalewidth {Number} Scales the width of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @param scaleheight {Number} Scales the height of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @description The scale() method scales the current drawing, bigger or smaller.\r\n */\r\n Context2D.prototype.scale = function(scalewidth, scaleheight) {\r\n if (isNaN(scalewidth) || isNaN(scaleheight)) {\r\n console.error(\"jsPDF.context2d.scale: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");\r\n }\r\n var matrix = new Matrix(scalewidth, 0.0, 0.0, scaleheight, 0.0, 0.0);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Rotates the current drawing\r\n *\r\n * @name rotate\r\n * @function\r\n * @param angle {Number} The rotation angle, in radians.\r\n * @description To calculate from degrees to radians: degrees*Math.PI/180.
    \r\n * Example: to rotate 5 degrees, specify the following: 5*Math.PI/180\r\n */\r\n Context2D.prototype.rotate = function(angle) {\r\n if (isNaN(angle)) {\r\n console.error(\"jsPDF.context2d.rotate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");\r\n }\r\n var matrix = new Matrix(\r\n Math.cos(angle),\r\n Math.sin(angle),\r\n -Math.sin(angle),\r\n Math.cos(angle),\r\n 0.0,\r\n 0.0\r\n );\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Remaps the (0,0) position on the canvas\r\n *\r\n * @name translate\r\n * @function\r\n * @param x {Number} The value to add to horizontal (x) coordinates\r\n * @param y {Number} The value to add to vertical (y) coordinates\r\n * @description The translate() method remaps the (0,0) position on the canvas.\r\n */\r\n Context2D.prototype.translate = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.translate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");\r\n }\r\n var matrix = new Matrix(1.0, 0.0, 0.0, 1.0, x, y);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Replaces the current transformation matrix for the drawing\r\n *\r\n * @name transform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.

    The transform() method replaces the current transformation matrix. It multiplies the current transformation matrix with the matrix described by:



    a c e

    b d f

    0 0 1

    In other words, the transform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.transform = function(a, b, c, d, e, f) {\r\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d) || isNaN(e) || isNaN(f)) {\r\n console.error(\"jsPDF.context2d.transform: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");\r\n }\r\n var matrix = new Matrix(a, b, c, d, e, f);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Resets the current transform to the identity matrix. Then runs transform()\r\n *\r\n * @name setTransform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.

    The setTransform() method resets the current transform to the identity matrix, and then runs transform() with the same arguments.

    In other words, the setTransform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.setTransform = function(a, b, c, d, e, f) {\r\n a = isNaN(a) ? 1 : a;\r\n b = isNaN(b) ? 0 : b;\r\n c = isNaN(c) ? 0 : c;\r\n d = isNaN(d) ? 1 : d;\r\n e = isNaN(e) ? 0 : e;\r\n f = isNaN(f) ? 0 : f;\r\n this.ctx.transform = new Matrix(a, b, c, d, e, f);\r\n };\r\n\r\n /**\r\n * Should only be used if pageWrapYEnabled is true\r\n *\r\n * @name setPageByYPosition\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns One-based Page Number\r\n */\r\n var setPageByYPosition = function(y) {\r\n if (this.pageWrapYEnabled) {\r\n this.lastBreak = 0;\r\n var manualBreaks = 0;\r\n var autoBreaks = 0;\r\n for (var i = 0; i < this.pageBreaks.length; i++) {\r\n if (y >= this.pageBreaks[i]) {\r\n manualBreaks++;\r\n if (this.lastBreak === 0) {\r\n autoBreaks++;\r\n }\r\n var spaceBetweenLastBreak = this.pageBreaks[i] - this.lastBreak;\r\n this.lastBreak = this.pageBreaks[i];\r\n var pagesSinceLastBreak = Math.floor(\r\n spaceBetweenLastBreak / this.pageWrapY\r\n );\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n }\r\n if (this.lastBreak === 0) {\r\n var pagesSinceLastBreak = Math.floor(y / this.pageWrapY) + 1;\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n return autoBreaks + manualBreaks;\r\n } else {\r\n return this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n }\r\n };\r\n\r\n var hasMargins = function() {\r\n return (\r\n this.margin[0] > 0 ||\r\n this.margin[1] > 0 ||\r\n this.margin[2] > 0 ||\r\n this.margin[3] > 0\r\n );\r\n };\r\n\r\n /**\r\n * Draws an image, canvas, or video onto the canvas\r\n *\r\n * @function\r\n * @param img {} Specifies the image, canvas, or video element to use\r\n * @param sx {Number} Optional. The x coordinate where to start clipping\r\n * @param sy {Number} Optional. The y coordinate where to start clipping\r\n * @param swidth {Number} Optional. The width of the clipped image\r\n * @param sheight {Number} Optional. The height of the clipped image\r\n * @param x {Number} The x coordinate where to place the image on the canvas\r\n * @param y {Number} The y coordinate where to place the image on the canvas\r\n * @param width {Number} Optional. The width of the image to use (stretch or reduce the image)\r\n * @param height {Number} Optional. The height of the image to use (stretch or reduce the image)\r\n */\r\n Context2D.prototype.drawImage = function(\r\n img,\r\n sx,\r\n sy,\r\n swidth,\r\n sheight,\r\n x,\r\n y,\r\n width,\r\n height\r\n ) {\r\n var imageProperties = this.pdf.getImageProperties(img);\r\n var factorX = 1;\r\n var factorY = 1;\r\n var isClip;\r\n\r\n var clipFactorX = 1;\r\n var clipFactorY = 1;\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width !== \"undefined\") {\r\n isClip = true;\r\n clipFactorX = width / swidth;\r\n clipFactorY = height / sheight;\r\n factorX = ((imageProperties.width / swidth) * width) / swidth;\r\n factorY = ((imageProperties.height / sheight) * height) / sheight;\r\n }\r\n\r\n //is sx and sy are set and x and y not, set x and y with values of sx and sy\r\n if (typeof x === \"undefined\") {\r\n x = sx;\r\n y = sy;\r\n sx = 0;\r\n sy = 0;\r\n }\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width === \"undefined\") {\r\n width = swidth;\r\n height = sheight;\r\n }\r\n if (typeof swidth === \"undefined\" && typeof width === \"undefined\") {\r\n width = imageProperties.width;\r\n height = imageProperties.height;\r\n }\r\n\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var angle = rad2deg(decomposedTransformationMatrix.rotate.shx);\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n var xRect = matrix.applyToRectangle(\r\n new Rectangle(\r\n x - sx * clipFactorX,\r\n y - sy * clipFactorY,\r\n swidth * factorX,\r\n sheight * factorY\r\n )\r\n );\r\n var pageArray = getPagesByPath.call(this, xRect);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var tmpRect = JSON.parse(JSON.stringify(xRect));\r\n tmpRect = pathPositionRedo(\r\n [tmpRect],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping = (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n tmpRect.x,\r\n tmpRect.y,\r\n tmpRect.w,\r\n tmpRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n xRect.x,\r\n xRect.y,\r\n xRect.w,\r\n xRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n }\r\n };\r\n\r\n var getPagesByPath = function(path, pageWrapX, pageWrapY) {\r\n var result = [];\r\n pageWrapX = pageWrapX || this.pdf.internal.pageSize.width;\r\n pageWrapY =\r\n pageWrapY ||\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var yOffset = this.posY + this.ctx.prevPageLastElemOffset;\r\n\r\n switch (path.type) {\r\n default:\r\n case \"mt\":\r\n case \"lt\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n break;\r\n case \"arc\":\r\n result.push(\r\n Math.floor((path.y + yOffset - path.radius) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor((path.y + yOffset + path.radius) / pageWrapY) + 1\r\n );\r\n break;\r\n case \"qct\":\r\n var rectOfQuadraticCurve = getQuadraticCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfQuadraticCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfQuadraticCurve.y + rectOfQuadraticCurve.h + yOffset) /\r\n pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"bct\":\r\n var rectOfBezierCurve = getBezierCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x2,\r\n path.y2,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfBezierCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfBezierCurve.y + rectOfBezierCurve.h + yOffset) / pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"rect\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n result.push(Math.floor((path.y + path.h + yOffset) / pageWrapY) + 1);\r\n }\r\n\r\n for (var i = 0; i < result.length; i += 1) {\r\n while (this.pdf.internal.getNumberOfPages() < result[i]) {\r\n addPage.call(this);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n var addPage = function() {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var font = this.font;\r\n var lineCap = this.lineCap;\r\n var lineWidth = this.lineWidth;\r\n var lineJoin = this.lineJoin;\r\n this.pdf.addPage();\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.font = font;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n };\r\n\r\n var pathPositionRedo = function(paths, x, y) {\r\n for (var i = 0; i < paths.length; i++) {\r\n switch (paths[i].type) {\r\n case \"bct\":\r\n paths[i].x2 += x;\r\n paths[i].y2 += y;\r\n case \"qct\":\r\n paths[i].x1 += x;\r\n paths[i].y1 += y;\r\n case \"mt\":\r\n case \"lt\":\r\n case \"arc\":\r\n default:\r\n paths[i].x += x;\r\n paths[i].y += y;\r\n }\r\n }\r\n return paths;\r\n };\r\n\r\n var sortPages = function(pages) {\r\n return pages.sort(function(a, b) {\r\n return a - b;\r\n });\r\n };\r\n\r\n var pathPreProcess = function(rule, isClip) {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var lineCap = this.lineCap;\r\n var oldLineWidth = this.lineWidth;\r\n var lineWidth = Math.abs(oldLineWidth * this.ctx.transform.scaleX);\r\n var lineJoin = this.lineJoin;\r\n\r\n var origPath = JSON.parse(JSON.stringify(this.path));\r\n var xPath = JSON.parse(JSON.stringify(this.path));\r\n var clipPath;\r\n var tmpPath;\r\n var pages = [];\r\n\r\n for (var i = 0; i < xPath.length; i++) {\r\n if (typeof xPath[i].x !== \"undefined\") {\r\n var page = getPagesByPath.call(this, xPath[i]);\r\n\r\n for (var ii = 0; ii < page.length; ii += 1) {\r\n if (pages.indexOf(page[ii]) === -1) {\r\n pages.push(page[ii]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var j = 0; j < pages.length; j++) {\r\n while (this.pdf.internal.getNumberOfPages() < pages[j]) {\r\n addPage.call(this);\r\n }\r\n }\r\n sortPages(pages);\r\n\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var k = min; k < max + 1; k++) {\r\n this.pdf.setPage(k);\r\n\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = k === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n k === 1 ? 0 : firstPageHeight + (k - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, rule, true);\r\n this.path = tmpPaths;\r\n }\r\n tmpPath = JSON.parse(JSON.stringify(origPath));\r\n this.path = pathPositionRedo(\r\n tmpPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n if (isClip === false || k === 0) {\r\n const needsClipping = (k > min || k < max) && hasMargins.call(this);\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n drawPaths.call(this, rule, isClip);\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n this.lineWidth = oldLineWidth;\r\n }\r\n } else {\r\n this.lineWidth = lineWidth;\r\n drawPaths.call(this, rule, isClip);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n this.path = origPath;\r\n };\r\n\r\n /**\r\n * Processes the paths\r\n *\r\n * @function\r\n * @param rule {String}\r\n * @param isClip {Boolean}\r\n * @private\r\n * @ignore\r\n */\r\n var drawPaths = function(rule, isClip) {\r\n if (rule === \"stroke\" && !isClip && isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n if (rule !== \"stroke\" && !isClip && isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var moves = [];\r\n\r\n //var alpha = (this.ctx.fillOpacity < 1) ? this.ctx.fillOpacity : this.ctx.globalAlpha;\r\n var delta;\r\n var xPath = this.path;\r\n for (var i = 0; i < xPath.length; i++) {\r\n var pt = xPath[i];\r\n\r\n switch (pt.type) {\r\n case \"begin\":\r\n moves.push({\r\n begin: true\r\n });\r\n break;\r\n\r\n case \"close\":\r\n moves.push({\r\n close: true\r\n });\r\n break;\r\n\r\n case \"mt\":\r\n moves.push({\r\n start: pt,\r\n deltas: [],\r\n abs: []\r\n });\r\n break;\r\n\r\n case \"lt\":\r\n var iii = moves.length;\r\n if (xPath[i - 1] && !isNaN(xPath[i - 1].x)) {\r\n delta = [pt.x - xPath[i - 1].x, pt.y - xPath[i - 1].y];\r\n if (iii > 0) {\r\n for (iii; iii >= 0; iii--) {\r\n if (\r\n moves[iii - 1].close !== true &&\r\n moves[iii - 1].begin !== true\r\n ) {\r\n moves[iii - 1].deltas.push(delta);\r\n moves[iii - 1].abs.push(pt);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case \"bct\":\r\n delta = [\r\n pt.x1 - xPath[i - 1].x,\r\n pt.y1 - xPath[i - 1].y,\r\n pt.x2 - xPath[i - 1].x,\r\n pt.y2 - xPath[i - 1].y,\r\n pt.x - xPath[i - 1].x,\r\n pt.y - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"qct\":\r\n var x1 = xPath[i - 1].x + (2.0 / 3.0) * (pt.x1 - xPath[i - 1].x);\r\n var y1 = xPath[i - 1].y + (2.0 / 3.0) * (pt.y1 - xPath[i - 1].y);\r\n var x2 = pt.x + (2.0 / 3.0) * (pt.x1 - pt.x);\r\n var y2 = pt.y + (2.0 / 3.0) * (pt.y1 - pt.y);\r\n var x3 = pt.x;\r\n var y3 = pt.y;\r\n delta = [\r\n x1 - xPath[i - 1].x,\r\n y1 - xPath[i - 1].y,\r\n x2 - xPath[i - 1].x,\r\n y2 - xPath[i - 1].y,\r\n x3 - xPath[i - 1].x,\r\n y3 - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"arc\":\r\n moves.push({\r\n deltas: [],\r\n abs: [],\r\n arc: true\r\n });\r\n\r\n if (Array.isArray(moves[moves.length - 1].abs)) {\r\n moves[moves.length - 1].abs.push(pt);\r\n }\r\n break;\r\n }\r\n }\r\n var style;\r\n if (!isClip) {\r\n if (rule === \"stroke\") {\r\n style = \"stroke\";\r\n } else {\r\n style = \"fill\";\r\n }\r\n } else {\r\n style = null;\r\n }\r\n\r\n var began = false;\r\n for (var k = 0; k < moves.length; k++) {\r\n if (moves[k].arc) {\r\n var arcs = moves[k].abs;\r\n\r\n for (var ii = 0; ii < arcs.length; ii++) {\r\n var arc = arcs[ii];\r\n\r\n if (arc.type === \"arc\") {\r\n drawArc.call(\r\n this,\r\n arc.x,\r\n arc.y,\r\n arc.radius,\r\n arc.startAngle,\r\n arc.endAngle,\r\n arc.counterclockwise,\r\n undefined,\r\n isClip,\r\n !began\r\n );\r\n } else {\r\n drawLine.call(this, arc.x, arc.y);\r\n }\r\n began = true;\r\n }\r\n } else if (moves[k].close === true) {\r\n this.pdf.internal.out(\"h\");\r\n began = false;\r\n } else if (moves[k].begin !== true) {\r\n var x = moves[k].start.x;\r\n var y = moves[k].start.y;\r\n drawLines.call(this, moves[k].deltas, x, y);\r\n began = true;\r\n }\r\n }\r\n\r\n if (style) {\r\n putStyle.call(this, style);\r\n }\r\n if (isClip) {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var getBaseline = function(y) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n switch (this.ctx.textBaseline) {\r\n case \"bottom\":\r\n return y - descent;\r\n case \"top\":\r\n return y + height - descent;\r\n case \"hanging\":\r\n return y + height - 2 * descent;\r\n case \"middle\":\r\n return y + height / 2 - descent;\r\n case \"ideographic\":\r\n // TODO not implemented\r\n return y;\r\n case \"alphabetic\":\r\n default:\r\n return y;\r\n }\r\n };\r\n\r\n var getTextBottom = function(yBaseLine) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n return yBaseLine + descent;\r\n };\r\n\r\n Context2D.prototype.createLinearGradient = function createLinearGradient() {\r\n var canvasGradient = function canvasGradient() {};\r\n\r\n canvasGradient.colorStops = [];\r\n canvasGradient.addColorStop = function(offset, color) {\r\n this.colorStops.push([offset, color]);\r\n };\r\n\r\n canvasGradient.getColor = function() {\r\n if (this.colorStops.length === 0) {\r\n return \"#000000\";\r\n }\r\n\r\n return this.colorStops[0][1];\r\n };\r\n\r\n canvasGradient.isCanvasGradient = true;\r\n return canvasGradient;\r\n };\r\n Context2D.prototype.createPattern = function createPattern() {\r\n return this.createLinearGradient();\r\n };\r\n Context2D.prototype.createRadialGradient = function createRadialGradient() {\r\n return this.createLinearGradient();\r\n };\r\n\r\n /**\r\n *\r\n * @param x Edge point X\r\n * @param y Edge point Y\r\n * @param r Radius\r\n * @param a1 start angle\r\n * @param a2 end angle\r\n * @param counterclockwise\r\n * @param style\r\n * @param isClip\r\n */\r\n var drawArc = function(\r\n x,\r\n y,\r\n r,\r\n a1,\r\n a2,\r\n counterclockwise,\r\n style,\r\n isClip,\r\n includeMove\r\n ) {\r\n // http://hansmuller-flex.blogspot.com/2011/10/more-about-approximating-circular-arcs.html\r\n var curves = createArc.call(this, r, a1, a2, counterclockwise);\r\n\r\n for (var i = 0; i < curves.length; i++) {\r\n var curve = curves[i];\r\n if (i === 0) {\r\n if (includeMove) {\r\n doMove.call(this, curve.x1 + x, curve.y1 + y);\r\n } else {\r\n drawLine.call(this, curve.x1 + x, curve.y1 + y);\r\n }\r\n }\r\n drawCurve.call(\r\n this,\r\n x,\r\n y,\r\n curve.x2,\r\n curve.y2,\r\n curve.x3,\r\n curve.y3,\r\n curve.x4,\r\n curve.y4\r\n );\r\n }\r\n\r\n if (!isClip) {\r\n putStyle.call(this, style);\r\n } else {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n switch (style) {\r\n case \"stroke\":\r\n this.pdf.internal.out(\"S\");\r\n break;\r\n case \"fill\":\r\n this.pdf.internal.out(\"f\");\r\n break;\r\n }\r\n };\r\n\r\n var doClip = function() {\r\n this.pdf.clip();\r\n this.pdf.discardPath();\r\n };\r\n\r\n var doMove = function(x, y) {\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x) +\r\n \" \" +\r\n getVerticalCoordinateString(y) +\r\n \" m\"\r\n );\r\n };\r\n\r\n var putText = function(options) {\r\n var textAlign;\r\n switch (options.align) {\r\n case \"right\":\r\n case \"end\":\r\n textAlign = \"right\";\r\n break;\r\n case \"center\":\r\n textAlign = \"center\";\r\n break;\r\n case \"left\":\r\n case \"start\":\r\n default:\r\n textAlign = \"left\";\r\n break;\r\n }\r\n\r\n var textDimensions = this.pdf.getTextDimensions(options.text);\r\n var yBaseLine = getBaseline.call(this, options.y);\r\n var yBottom = getTextBottom.call(this, yBaseLine);\r\n var yTop = yBottom - textDimensions.h;\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(options.x, yBaseLine));\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n\r\n var baselineRect = this.ctx.transform.applyToRectangle(\r\n new Rectangle(options.x, yBaseLine, textDimensions.w, textDimensions.h)\r\n );\r\n var textBounds = matrix.applyToRectangle(\r\n new Rectangle(options.x, yTop, textDimensions.w, textDimensions.h)\r\n );\r\n var pageArray = getPagesByPath.call(this, textBounds);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath, oldSize, oldLineWidth;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusBottomMargin =\r\n this.pdf.internal.pageSize.height - this.margin[2];\r\n var pageHeightMinusMargins =\r\n pageHeightMinusBottomMargin - this.margin[0];\r\n var pageWidthMinusRightMargin =\r\n this.pdf.internal.pageSize.width - this.margin[1];\r\n var pageWidthMinusMargins = pageWidthMinusRightMargin - this.margin[3];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -1 * previousPageHeightSum + topMargin\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var textBoundsOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(textBounds))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n\r\n var doSlice = this.autoPaging !== \"text\";\r\n\r\n if (\r\n doSlice ||\r\n textBoundsOnPage.y + textBoundsOnPage.h <= pageHeightMinusBottomMargin\r\n ) {\r\n if (\r\n doSlice ||\r\n (textBoundsOnPage.y >= topMargin &&\r\n textBoundsOnPage.x <= pageWidthMinusRightMargin)\r\n ) {\r\n var croppedText = doSlice\r\n ? options.text\r\n : this.pdf.splitTextToSize(\r\n options.text,\r\n options.maxWidth ||\r\n pageWidthMinusRightMargin - textBoundsOnPage.x\r\n )[0];\r\n var baseLineRectOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(baselineRect))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum +\r\n topMargin +\r\n this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping =\r\n doSlice && (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n\r\n this.pdf.text(\r\n croppedText,\r\n baseLineRectOnPage.x,\r\n baseLineRectOnPage.y,\r\n {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode\r\n }\r\n );\r\n\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n // This text is the last element of the page, but it got cut off due to the margin\r\n // so we render it in the next page\r\n\r\n if (textBoundsOnPage.y < pageHeightMinusBottomMargin) {\r\n // As a result, all other elements have their y offset increased\r\n this.ctx.prevPageLastElemOffset +=\r\n pageHeightMinusBottomMargin - textBoundsOnPage.y;\r\n }\r\n }\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n } else {\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n this.pdf.text(options.text, pt.x + this.posX, pt.y + this.posY, {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode,\r\n maxWidth: options.maxWidth\r\n });\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n };\r\n\r\n var drawLine = function(x, y, prevX, prevY) {\r\n prevX = prevX || 0;\r\n prevY = prevY || 0;\r\n\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x + prevX) +\r\n \" \" +\r\n getVerticalCoordinateString(y + prevY) +\r\n \" l\"\r\n );\r\n };\r\n\r\n var drawLines = function(lines, x, y) {\r\n return this.pdf.lines(lines, x, y, null, null);\r\n };\r\n\r\n var drawCurve = function(x, y, x1, y1, x2, y2, x3, y3) {\r\n this.pdf.internal.out(\r\n [\r\n f2(getHorizontalCoordinate(x1 + x)),\r\n f2(getVerticalCoordinate(y1 + y)),\r\n f2(getHorizontalCoordinate(x2 + x)),\r\n f2(getVerticalCoordinate(y2 + y)),\r\n f2(getHorizontalCoordinate(x3 + x)),\r\n f2(getVerticalCoordinate(y3 + y)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n };\r\n\r\n /**\r\n * Return a array of objects that represent bezier curves which approximate the circular arc centered at the origin, from startAngle to endAngle (radians) with the specified radius.\r\n *\r\n * Each bezier curve is an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n * @function createArc\r\n */\r\n var createArc = function(radius, startAngle, endAngle, anticlockwise) {\r\n var EPSILON = 0.00001; // Roughly 1/1000th of a degree, see below\r\n var twoPi = Math.PI * 2;\r\n var halfPi = Math.PI / 2.0;\r\n\r\n while (startAngle > endAngle) {\r\n startAngle = startAngle - twoPi;\r\n }\r\n var totalAngle = Math.abs(endAngle - startAngle);\r\n if (totalAngle < twoPi) {\r\n if (anticlockwise) {\r\n totalAngle = twoPi - totalAngle;\r\n }\r\n }\r\n\r\n // Compute the sequence of arc curves, up to PI/2 at a time.\r\n var curves = [];\r\n\r\n // clockwise or counterclockwise\r\n var sgn = anticlockwise ? -1 : +1;\r\n\r\n var a1 = startAngle;\r\n for (; totalAngle > EPSILON; ) {\r\n var remain = sgn * Math.min(totalAngle, halfPi);\r\n var a2 = a1 + remain;\r\n curves.push(createSmallArc.call(this, radius, a1, a2));\r\n totalAngle -= Math.abs(a2 - a1);\r\n a1 = a2;\r\n }\r\n\r\n return curves;\r\n };\r\n\r\n /**\r\n * Cubic bezier approximation of a circular arc centered at the origin, from (radians) a1 to a2, where a2-a1 < pi/2. The arc's radius is r.\r\n *\r\n * Returns an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n *\r\n * This algorithm is based on the approach described in: A. Riškus, \"Approximation of a Cubic Bezier Curve by Circular Arcs and Vice Versa,\" Information Technology and Control, 35(4), 2006 pp. 371-378.\r\n */\r\n var createSmallArc = function(r, a1, a2) {\r\n var a = (a2 - a1) / 2.0;\r\n\r\n var x4 = r * Math.cos(a);\r\n var y4 = r * Math.sin(a);\r\n var x1 = x4;\r\n var y1 = -y4;\r\n\r\n var q1 = x1 * x1 + y1 * y1;\r\n var q2 = q1 + x1 * x4 + y1 * y4;\r\n var k2 = ((4 / 3) * (Math.sqrt(2 * q1 * q2) - q2)) / (x1 * y4 - y1 * x4);\r\n\r\n var x2 = x1 - k2 * y1;\r\n var y2 = y1 + k2 * x1;\r\n var x3 = x2;\r\n var y3 = -y2;\r\n\r\n var ar = a + a1;\r\n var cos_ar = Math.cos(ar);\r\n var sin_ar = Math.sin(ar);\r\n\r\n return {\r\n x1: r * Math.cos(a1),\r\n y1: r * Math.sin(a1),\r\n x2: x2 * cos_ar - y2 * sin_ar,\r\n y2: x2 * sin_ar + y2 * cos_ar,\r\n x3: x3 * cos_ar - y3 * sin_ar,\r\n y3: x3 * sin_ar + y3 * cos_ar,\r\n x4: r * Math.cos(a2),\r\n y4: r * Math.sin(a2)\r\n };\r\n };\r\n\r\n var rad2deg = function(value) {\r\n return (value * 180) / Math.PI;\r\n };\r\n\r\n var getQuadraticCurveBoundary = function(sx, sy, cpx, cpy, ex, ey) {\r\n var midX1 = sx + (cpx - sx) * 0.5;\r\n var midY1 = sy + (cpy - sy) * 0.5;\r\n var midX2 = ex + (cpx - ex) * 0.5;\r\n var midY2 = ey + (cpy - ey) * 0.5;\r\n var resultX1 = Math.min(sx, ex, midX1, midX2);\r\n var resultX2 = Math.max(sx, ex, midX1, midX2);\r\n var resultY1 = Math.min(sy, ey, midY1, midY2);\r\n var resultY2 = Math.max(sy, ey, midY1, midY2);\r\n return new Rectangle(\r\n resultX1,\r\n resultY1,\r\n resultX2 - resultX1,\r\n resultY2 - resultY1\r\n );\r\n };\r\n\r\n //De Casteljau algorithm\r\n var getBezierCurveBoundary = function(ax, ay, bx, by, cx, cy, dx, dy) {\r\n var tobx = bx - ax;\r\n var toby = by - ay;\r\n var tocx = cx - bx;\r\n var tocy = cy - by;\r\n var todx = dx - cx;\r\n var tody = dy - cy;\r\n var precision = 40;\r\n var d,\r\n i,\r\n px,\r\n py,\r\n qx,\r\n qy,\r\n rx,\r\n ry,\r\n tx,\r\n ty,\r\n sx,\r\n sy,\r\n x,\r\n y,\r\n minx,\r\n miny,\r\n maxx,\r\n maxy,\r\n toqx,\r\n toqy,\r\n torx,\r\n tory,\r\n totx,\r\n toty;\r\n for (i = 0; i < precision + 1; i++) {\r\n d = i / precision;\r\n px = ax + d * tobx;\r\n py = ay + d * toby;\r\n qx = bx + d * tocx;\r\n qy = by + d * tocy;\r\n rx = cx + d * todx;\r\n ry = cy + d * tody;\r\n toqx = qx - px;\r\n toqy = qy - py;\r\n torx = rx - qx;\r\n tory = ry - qy;\r\n\r\n sx = px + d * toqx;\r\n sy = py + d * toqy;\r\n tx = qx + d * torx;\r\n ty = qy + d * tory;\r\n totx = tx - sx;\r\n toty = ty - sy;\r\n\r\n x = sx + d * totx;\r\n y = sy + d * toty;\r\n if (i == 0) {\r\n minx = x;\r\n miny = y;\r\n maxx = x;\r\n maxy = y;\r\n } else {\r\n minx = Math.min(minx, x);\r\n miny = Math.min(miny, y);\r\n maxx = Math.max(maxx, x);\r\n maxy = Math.max(maxy, y);\r\n }\r\n }\r\n return new Rectangle(\r\n Math.round(minx),\r\n Math.round(miny),\r\n Math.round(maxx - minx),\r\n Math.round(maxy - miny)\r\n );\r\n };\r\n\r\n var getPrevLineDashValue = function(lineDash, lineDashOffset) {\r\n return JSON.stringify({\r\n lineDash: lineDash,\r\n lineDashOffset: lineDashOffset\r\n });\r\n };\r\n\r\n var setLineDash = function() {\r\n // Avoid unnecessary line dash declarations.\r\n if (\r\n !this.prevLineDash &&\r\n !this.ctx.lineDash.length &&\r\n !this.ctx.lineDashOffset\r\n ) {\r\n return;\r\n }\r\n\r\n // Avoid unnecessary line dash declarations.\r\n const nextLineDash = getPrevLineDashValue(\r\n this.ctx.lineDash,\r\n this.ctx.lineDashOffset\r\n );\r\n if (this.prevLineDash !== nextLineDash) {\r\n this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset);\r\n this.prevLineDash = nextLineDash;\r\n }\r\n };\r\n})(jsPDF.API);\r\n","/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var ASCII85Encode = function(a) {\n var b, c, d, e, f, g, h, i, j, k;\n // eslint-disable-next-line no-control-regex\n for (\n !/[^\\x00-\\xFF]/.test(a),\n b = \"\\x00\\x00\\x00\\x00\".slice(a.length % 4 || 4),\n a += b,\n c = [],\n d = 0,\n e = a.length;\n e > d;\n d += 4\n )\n (f =\n (a.charCodeAt(d) << 24) +\n (a.charCodeAt(d + 1) << 16) +\n (a.charCodeAt(d + 2) << 8) +\n a.charCodeAt(d + 3)),\n 0 !== f\n ? ((k = f % 85),\n (f = (f - k) / 85),\n (j = f % 85),\n (f = (f - j) / 85),\n (i = f % 85),\n (f = (f - i) / 85),\n (h = f % 85),\n (f = (f - h) / 85),\n (g = f % 85),\n c.push(g + 33, h + 33, i + 33, j + 33, k + 33))\n : c.push(122);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(c, b.length),\n String.fromCharCode.apply(String, c) + \"~>\"\n );\n };\n\n var ASCII85Decode = function(a) {\n var c,\n d,\n e,\n f,\n g,\n h = String,\n l = \"length\",\n w = 255,\n x = \"charCodeAt\",\n y = \"slice\",\n z = \"replace\";\n for (\n \"~>\" === a[y](-2),\n a = a[y](0, -2)\n [z](/\\s/g, \"\")\n [z](\"z\", \"!!!!!\"),\n c = \"uuuuu\"[y](a[l] % 5 || 5),\n a += c,\n e = [],\n f = 0,\n g = a[l];\n g > f;\n f += 5\n )\n (d =\n 52200625 * (a[x](f) - 33) +\n 614125 * (a[x](f + 1) - 33) +\n 7225 * (a[x](f + 2) - 33) +\n 85 * (a[x](f + 3) - 33) +\n (a[x](f + 4) - 33)),\n e.push(w & (d >> 24), w & (d >> 16), w & (d >> 8), w & d);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(e, c[l]),\n h.fromCharCode.apply(h, e)\n );\n };\n\n var ASCIIHexEncode = function(value) {\n return (\n value\n .split(\"\")\n .map(function(value) {\n return (\"0\" + value.charCodeAt().toString(16)).slice(-2);\n })\n .join(\"\") + \">\"\n );\n };\n\n var ASCIIHexDecode = function(value) {\n var regexCheckIfHex = new RegExp(/^([0-9A-Fa-f]{2})+$/);\n value = value.replace(/\\s/g, \"\");\n if (value.indexOf(\">\") !== -1) {\n value = value.substr(0, value.indexOf(\">\"));\n }\n if (value.length % 2) {\n value += \"0\";\n }\n if (regexCheckIfHex.test(value) === false) {\n return \"\";\n }\n var result = \"\";\n for (var i = 0; i < value.length; i += 2) {\n result += String.fromCharCode(\"0x\" + (value[i] + value[i + 1]));\n }\n return result;\n };\n /*\n var FlatePredictors = {\n None: 1,\n TIFF: 2,\n PNG_None: 10,\n PNG_Sub: 11,\n PNG_Up: 12,\n PNG_Average: 13,\n PNG_Paeth: 14,\n PNG_Optimum: 15\n };\n */\n\n var FlateEncode = function(data) {\n var arr = new Uint8Array(data.length);\n var i = data.length;\n while (i--) {\n arr[i] = data.charCodeAt(i);\n }\n arr = zlibSync(arr);\n data = arr.reduce(function(data, byte) {\n return data + String.fromCharCode(byte);\n }, \"\");\n return data;\n };\n\n jsPDFAPI.processDataByFilters = function(origData, filterChain) {\n \"use strict\";\n var i = 0;\n var data = origData || \"\";\n var reverseChain = [];\n filterChain = filterChain || [];\n\n if (typeof filterChain === \"string\") {\n filterChain = [filterChain];\n }\n\n for (i = 0; i < filterChain.length; i += 1) {\n switch (filterChain[i]) {\n case \"ASCII85Decode\":\n case \"/ASCII85Decode\":\n data = ASCII85Decode(data);\n reverseChain.push(\"/ASCII85Encode\");\n break;\n case \"ASCII85Encode\":\n case \"/ASCII85Encode\":\n data = ASCII85Encode(data);\n reverseChain.push(\"/ASCII85Decode\");\n break;\n case \"ASCIIHexDecode\":\n case \"/ASCIIHexDecode\":\n data = ASCIIHexDecode(data);\n reverseChain.push(\"/ASCIIHexEncode\");\n break;\n case \"ASCIIHexEncode\":\n case \"/ASCIIHexEncode\":\n data = ASCIIHexEncode(data);\n reverseChain.push(\"/ASCIIHexDecode\");\n break;\n case \"FlateEncode\":\n case \"/FlateEncode\":\n data = FlateEncode(data);\n reverseChain.push(\"/FlateDecode\");\n break;\n default:\n throw new Error(\n 'The filter: \"' + filterChain[i] + '\" is not implemented'\n );\n }\n }\n\n return { data: data, reverseChain: reverseChain.reverse().join(\" \") };\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name fileloading\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name loadFile\n * @function\n * @param {string} url\n * @param {boolean} sync\n * @param {function} callback\n * @returns {string|undefined} result\n */\n jsPDFAPI.loadFile = function(url, sync, callback) {\n return browserRequest(url, sync, callback);\n\n };\n\n /**\n * @name loadImageFile\n * @function\n * @param {string} path\n * @param {boolean} sync\n * @param {function} callback\n */\n jsPDFAPI.loadImageFile = jsPDFAPI.loadFile;\n\n function browserRequest(url, sync, callback) {\n sync = sync === false ? false : true;\n callback = typeof callback === \"function\" ? callback : function() {};\n var result = undefined;\n\n var xhr = function(url, sync, callback) {\n var request = new XMLHttpRequest();\n var i = 0;\n\n var sanitizeUnicode = function(data) {\n var dataLength = data.length;\n var charArray = [];\n var StringFromCharCode = String.fromCharCode;\n\n //Transform Unicode to ASCII\n for (i = 0; i < dataLength; i += 1) {\n charArray.push(StringFromCharCode(data.charCodeAt(i) & 0xff));\n }\n return charArray.join(\"\");\n };\n\n request.open(\"GET\", url, !sync);\n // XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]\n request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n if (sync === false) {\n request.onload = function() {\n if (request.status === 200) {\n callback(sanitizeUnicode(this.responseText));\n } else {\n callback(undefined);\n }\n };\n }\n request.send(null);\n\n if (sync && request.status === 200) {\n return sanitizeUnicode(request.responseText);\n }\n };\n try {\n result = xhr(url, sync, callback);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n return result;\n }\n\n function nodeReadFile(url, sync, callback) {\n sync = sync === false ? false : true;\n var result = undefined;\n\n var fs = require(\"fs\");\n var path = require(\"path\");\n\n url = path.resolve(url);\n if (sync) {\n try {\n result = fs.readFileSync(url, { encoding: \"latin1\" });\n } catch (e) {\n return undefined;\n }\n } else {\n fs.readFile(url, { encoding: \"latin1\" }, function(err, data) {\n if (!callback) {\n return;\n }\n if (err) {\n callback(undefined);\n }\n callback(data);\n });\n }\n\n return result;\n }\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2018 Erik Koopmans\n * Released under the MIT License.\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { normalizeFontFace } from \"../libs/fontFace.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF html PlugIn\n *\n * @name html\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadHtml2Canvas() {\n return (function() {\n if (globalObject[\"html2canvas\"]) {\n return Promise.resolve(globalObject[\"html2canvas\"]);\n }\n\n return import(\"html2canvas\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load html2canvas: \" + e));\n })\n .then(function(html2canvas) {\n return html2canvas.default ? html2canvas.default : html2canvas;\n });\n }\n\n function loadDomPurify() {\n return (function() {\n if (globalObject[\"DOMPurify\"]) {\n return Promise.resolve(globalObject[\"DOMPurify\"]);\n }\n\n return import(\"dompurify\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load dompurify: \" + e));\n })\n .then(function(dompurify) {\n return dompurify.default ? dompurify.default : dompurify;\n });\n }\n\n /**\n * Determine the type of a variable/object.\n *\n * @private\n * @ignore\n */\n var objType = function(obj) {\n var type = typeof obj;\n if (type === \"undefined\") return \"undefined\";\n else if (type === \"string\" || obj instanceof String) return \"string\";\n else if (type === \"number\" || obj instanceof Number) return \"number\";\n else if (type === \"function\" || obj instanceof Function) return \"function\";\n else if (!!obj && obj.constructor === Array) return \"array\";\n else if (obj && obj.nodeType === 1) return \"element\";\n else if (type === \"object\") return \"object\";\n else return \"unknown\";\n };\n\n /**\n * Create an HTML element with optional className, innerHTML, and style.\n *\n * @private\n * @ignore\n */\n var createElement = function(tagName, opt) {\n var el = document.createElement(tagName);\n if (opt.className) el.className = opt.className;\n if (opt.innerHTML && opt.dompurify) {\n el.innerHTML = opt.dompurify.sanitize(opt.innerHTML);\n }\n for (var key in opt.style) {\n el.style[key] = opt.style[key];\n }\n return el;\n };\n\n /**\n * Deep-clone a node and preserve contents/properties.\n *\n * @private\n * @ignore\n */\n var cloneNode = function(node, javascriptEnabled) {\n // Recursively clone the node.\n var clone =\n node.nodeType === 3\n ? document.createTextNode(node.nodeValue)\n : node.cloneNode(false);\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (\n javascriptEnabled === true ||\n child.nodeType !== 1 ||\n child.nodeName !== \"SCRIPT\"\n ) {\n clone.appendChild(cloneNode(child, javascriptEnabled));\n }\n }\n\n if (node.nodeType === 1) {\n // Preserve contents/properties of special nodes.\n if (node.nodeName === \"CANVAS\") {\n clone.width = node.width;\n clone.height = node.height;\n clone.getContext(\"2d\").drawImage(node, 0, 0);\n } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n clone.value = node.value;\n }\n\n // Preserve the node's scroll position when it loads.\n clone.addEventListener(\n \"load\",\n function() {\n clone.scrollTop = node.scrollTop;\n clone.scrollLeft = node.scrollLeft;\n },\n true\n );\n }\n\n // Return the cloned node.\n return clone;\n };\n\n /* ----- CONSTRUCTOR ----- */\n\n var Worker = function Worker(opt) {\n // Create the root parent for the proto chain, and the starting Worker.\n var root = Object.assign(\n Worker.convert(Promise.resolve()),\n JSON.parse(JSON.stringify(Worker.template))\n );\n var self = Worker.convert(Promise.resolve(), root);\n\n // Set progress, optional settings, and return.\n self = self.setProgress(1, Worker, 1, [Worker]);\n self = self.set(opt);\n return self;\n };\n\n // Boilerplate for subclassing Promise.\n Worker.prototype = Object.create(Promise.prototype);\n Worker.prototype.constructor = Worker;\n\n // Converts/casts promises into Workers.\n Worker.convert = function convert(promise, inherit) {\n // Uses prototypal inheritance to receive changes made to ancestors' properties.\n promise.__proto__ = inherit || Worker.prototype;\n return promise;\n };\n\n Worker.template = {\n prop: {\n src: null,\n container: null,\n overlay: null,\n canvas: null,\n img: null,\n pdf: null,\n pageSize: null,\n callback: function() {}\n },\n progress: {\n val: 0,\n state: null,\n n: 0,\n stack: []\n },\n opt: {\n filename: \"file.pdf\",\n margin: [0, 0, 0, 0],\n enableLinks: true,\n x: 0,\n y: 0,\n html2canvas: {},\n jsPDF: {},\n backgroundColor: \"transparent\"\n }\n };\n\n /* ----- FROM / TO ----- */\n\n Worker.prototype.from = function from(src, type) {\n function getType(src) {\n switch (objType(src)) {\n case \"string\":\n return \"string\";\n case \"element\":\n return src.nodeName.toLowerCase() === \"canvas\" ? \"canvas\" : \"element\";\n default:\n return \"unknown\";\n }\n }\n\n return this.then(function from_main() {\n type = type || getType(src);\n switch (type) {\n case \"string\":\n return this.then(loadDomPurify).then(function(dompurify) {\n return this.set({\n src: createElement(\"div\", {\n innerHTML: src,\n dompurify: dompurify\n })\n });\n });\n case \"element\":\n return this.set({ src: src });\n case \"canvas\":\n return this.set({ canvas: src });\n case \"img\":\n return this.set({ img: src });\n default:\n return this.error(\"Unknown source type.\");\n }\n });\n };\n\n Worker.prototype.to = function to(target) {\n // Route the 'to' request to the appropriate method.\n switch (target) {\n case \"container\":\n return this.toContainer();\n case \"canvas\":\n return this.toCanvas();\n case \"img\":\n return this.toImg();\n case \"pdf\":\n return this.toPdf();\n default:\n return this.error(\"Invalid target.\");\n }\n };\n\n Worker.prototype.toContainer = function toContainer() {\n // Set up function prerequisites.\n var prereqs = [\n function checkSrc() {\n return (\n this.prop.src || this.error(\"Cannot duplicate - no source HTML.\")\n );\n },\n function checkPageSize() {\n return this.prop.pageSize || this.setPageSize();\n }\n ];\n return this.thenList(prereqs).then(function toContainer_main() {\n // Define the CSS styles for the container and its overlay parent.\n var overlayCSS = {\n position: \"fixed\",\n overflow: \"hidden\",\n zIndex: 1000,\n left: \"-100000px\",\n right: 0,\n bottom: 0,\n top: 0\n };\n var containerCSS = {\n position: \"relative\",\n display: \"inline-block\",\n width:\n (typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.windowWidth\n : Math.max(\n this.prop.src.clientWidth,\n this.prop.src.scrollWidth,\n this.prop.src.offsetWidth\n )) + \"px\",\n left: 0,\n right: 0,\n top: 0,\n margin: \"auto\",\n backgroundColor: this.opt.backgroundColor\n }; // Set the overlay to hidden (could be changed in the future to provide a print preview).\n\n var source = cloneNode(\n this.prop.src,\n this.opt.html2canvas.javascriptEnabled\n );\n\n if (source.tagName === \"BODY\") {\n containerCSS.height =\n Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.clientHeight,\n document.documentElement.scrollHeight,\n document.documentElement.offsetHeight\n ) + \"px\";\n }\n\n this.prop.overlay = createElement(\"div\", {\n className: \"html2pdf__overlay\",\n style: overlayCSS\n });\n this.prop.container = createElement(\"div\", {\n className: \"html2pdf__container\",\n style: containerCSS\n });\n this.prop.container.appendChild(source);\n this.prop.container.firstChild.appendChild(\n createElement(\"div\", {\n style: {\n clear: \"both\",\n border: \"0 none transparent\",\n margin: 0,\n padding: 0,\n height: 0\n }\n })\n );\n this.prop.container.style.float = \"none\";\n this.prop.overlay.appendChild(this.prop.container);\n document.body.appendChild(this.prop.overlay);\n this.prop.container.firstChild.style.position = \"relative\";\n this.prop.container.height =\n Math.max(\n this.prop.container.firstChild.clientHeight,\n this.prop.container.firstChild.scrollHeight,\n this.prop.container.firstChild.offsetHeight\n ) + \"px\";\n });\n };\n\n Worker.prototype.toCanvas = function toCanvas() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toCanvas_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var options = Object.assign({}, this.opt.html2canvas);\n delete options.onrendered;\n\n return html2canvas(this.prop.container, options);\n })\n .then(function toCanvas_post(canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toContext2d = function toContext2d() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toContext2d_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n\n var pdf = this.opt.jsPDF;\n var fontFaces = this.opt.fontFaces;\n\n var scale =\n typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.width / this.opt.windowWidth\n : 1;\n\n var options = Object.assign(\n {\n async: true,\n allowTaint: true,\n scale: scale,\n scrollX: this.opt.scrollX || 0,\n scrollY: this.opt.scrollY || 0,\n backgroundColor: \"#ffffff\",\n imageTimeout: 15000,\n logging: true,\n proxy: null,\n removeContainer: true,\n foreignObjectRendering: false,\n useCORS: false\n },\n this.opt.html2canvas\n );\n delete options.onrendered;\n\n pdf.context2d.autoPaging =\n typeof this.opt.autoPaging === \"undefined\"\n ? true\n : this.opt.autoPaging;\n pdf.context2d.posX = this.opt.x;\n pdf.context2d.posY = this.opt.y;\n pdf.context2d.margin = this.opt.margin;\n pdf.context2d.fontFaces = fontFaces;\n\n if (fontFaces) {\n for (var i = 0; i < fontFaces.length; ++i) {\n var font = fontFaces[i];\n var src = font.src.find(function(src) {\n return src.format === \"truetype\";\n });\n\n if (src) {\n pdf.addFont(src.url, font.ref.name, font.ref.style);\n }\n }\n }\n\n options.windowHeight = options.windowHeight || 0;\n options.windowHeight =\n options.windowHeight == 0\n ? Math.max(\n this.prop.container.clientHeight,\n this.prop.container.scrollHeight,\n this.prop.container.offsetHeight\n )\n : options.windowHeight;\n\n pdf.context2d.save(true);\n return html2canvas(this.prop.container, options);\n })\n .then(function toContext2d_post(canvas) {\n this.opt.jsPDF.context2d.restore(true);\n\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toImg = function toImg() {\n // Set up function prerequisites.\n var prereqs = [\n function checkCanvas() {\n return this.prop.canvas || this.toCanvas();\n }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toImg_main() {\n var imgData = this.prop.canvas.toDataURL(\n \"image/\" + this.opt.image.type,\n this.opt.image.quality\n );\n this.prop.img = document.createElement(\"img\");\n this.prop.img.src = imgData;\n });\n };\n\n Worker.prototype.toPdf = function toPdf() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContext2d() {\n return this.toContext2d();\n }\n //function checkCanvas() { return this.prop.canvas || this.toCanvas(); }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toPdf_main() {\n // Create local copies of frequently used properties.\n this.prop.pdf = this.prop.pdf || this.opt.jsPDF;\n });\n };\n\n /* ----- OUTPUT / SAVE ----- */\n\n Worker.prototype.output = function output(type, options, src) {\n // Redirect requests to the correct function (outputPdf / outputImg).\n src = src || \"pdf\";\n if (src.toLowerCase() === \"img\" || src.toLowerCase() === \"image\") {\n return this.outputImg(type, options);\n } else {\n return this.outputPdf(type, options);\n }\n };\n\n Worker.prototype.outputPdf = function outputPdf(type, options) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputPdf_main() {\n /* Currently implemented output types:\n * https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992\n * save(options), arraybuffer, blob, bloburi/bloburl,\n * datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl\n */\n return this.prop.pdf.output(type, options);\n });\n };\n\n Worker.prototype.outputImg = function outputImg(type) {\n // Set up function prerequisites.\n var prereqs = [\n function checkImg() {\n return this.prop.img || this.toImg();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputImg_main() {\n switch (type) {\n case undefined:\n case \"img\":\n return this.prop.img;\n case \"datauristring\":\n case \"dataurlstring\":\n return this.prop.img.src;\n case \"datauri\":\n case \"dataurl\":\n return (document.location.href = this.prop.img.src);\n default:\n throw 'Image output type \"' + type + '\" is not supported.';\n }\n });\n };\n\n Worker.prototype.save = function save(filename) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs)\n .set(filename ? { filename: filename } : null)\n .then(function save_main() {\n this.prop.pdf.save(this.opt.filename);\n });\n };\n\n Worker.prototype.doCallback = function doCallback() {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs).then(function doCallback_main() {\n this.prop.callback(this.prop.pdf);\n });\n };\n\n /* ----- SET / GET ----- */\n\n Worker.prototype.set = function set(opt) {\n // TODO: Implement ordered pairs?\n\n // Silently ignore invalid or empty input.\n if (objType(opt) !== \"object\") {\n return this;\n }\n\n // Build an array of setter functions to queue.\n var fns = Object.keys(opt || {}).map(function(key) {\n if (key in Worker.template.prop) {\n // Set pre-defined properties.\n return function set_prop() {\n this.prop[key] = opt[key];\n };\n } else {\n switch (key) {\n case \"margin\":\n return this.setMargin.bind(this, opt.margin);\n case \"jsPDF\":\n return function set_jsPDF() {\n this.opt.jsPDF = opt.jsPDF;\n return this.setPageSize();\n };\n case \"pageSize\":\n return this.setPageSize.bind(this, opt.pageSize);\n default:\n // Set any other properties in opt.\n return function set_opt() {\n this.opt[key] = opt[key];\n };\n }\n }\n }, this);\n\n // Set properties within the promise chain.\n return this.then(function set_main() {\n return this.thenList(fns);\n });\n };\n\n Worker.prototype.get = function get(key, cbk) {\n return this.then(function get_main() {\n // Fetch the requested property, either as a predefined prop or in opt.\n var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];\n return cbk ? cbk(val) : val;\n });\n };\n\n Worker.prototype.setMargin = function setMargin(margin) {\n return this.then(function setMargin_main() {\n // Parse the margin property.\n switch (objType(margin)) {\n case \"number\":\n margin = [margin, margin, margin, margin];\n // eslint-disable-next-line no-fallthrough\n case \"array\":\n if (margin.length === 2) {\n margin = [margin[0], margin[1], margin[0], margin[1]];\n }\n if (margin.length === 4) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n default:\n return this.error(\"Invalid margin array.\");\n }\n\n // Set the margin property, then update pageSize.\n this.opt.margin = margin;\n }).then(this.setPageSize);\n };\n\n Worker.prototype.setPageSize = function setPageSize(pageSize) {\n function toPx(val, k) {\n return Math.floor(((val * k) / 72) * 96);\n }\n\n return this.then(function setPageSize_main() {\n // Retrieve page-size based on jsPDF settings, if not explicitly provided.\n pageSize = pageSize || jsPDF.getPageSize(this.opt.jsPDF);\n\n // Add 'inner' field if not present.\n if (!pageSize.hasOwnProperty(\"inner\")) {\n pageSize.inner = {\n width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],\n height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]\n };\n pageSize.inner.px = {\n width: toPx(pageSize.inner.width, pageSize.k),\n height: toPx(pageSize.inner.height, pageSize.k)\n };\n pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;\n }\n\n // Attach pageSize to this.\n this.prop.pageSize = pageSize;\n });\n };\n\n Worker.prototype.setProgress = function setProgress(val, state, n, stack) {\n // Immediately update all progress values.\n if (val != null) this.progress.val = val;\n if (state != null) this.progress.state = state;\n if (n != null) this.progress.n = n;\n if (stack != null) this.progress.stack = stack;\n this.progress.ratio = this.progress.val / this.progress.state;\n\n // Return this for command chaining.\n return this;\n };\n\n Worker.prototype.updateProgress = function updateProgress(\n val,\n state,\n n,\n stack\n ) {\n // Immediately update all progress values, using setProgress.\n return this.setProgress(\n val ? this.progress.val + val : null,\n state ? state : null,\n n ? this.progress.n + n : null,\n stack ? this.progress.stack.concat(stack) : null\n );\n };\n\n /* ----- PROMISE MAPPING ----- */\n\n Worker.prototype.then = function then(onFulfilled, onRejected) {\n // Wrap `this` for encapsulation.\n var self = this;\n\n return this.thenCore(onFulfilled, onRejected, function then_main(\n onFulfilled,\n onRejected\n ) {\n // Update progress while queuing, calling, and resolving `then`.\n self.updateProgress(null, null, 1, [onFulfilled]);\n return Promise.prototype.then\n .call(this, function then_pre(val) {\n self.updateProgress(null, onFulfilled);\n return val;\n })\n .then(onFulfilled, onRejected)\n .then(function then_post(val) {\n self.updateProgress(1);\n return val;\n });\n });\n };\n\n Worker.prototype.thenCore = function thenCore(\n onFulfilled,\n onRejected,\n thenBase\n ) {\n // Handle optional thenBase parameter.\n thenBase = thenBase || Promise.prototype.then;\n\n // Wrap `this` for encapsulation and bind it to the promise handlers.\n var self = this;\n if (onFulfilled) {\n onFulfilled = onFulfilled.bind(self);\n }\n if (onRejected) {\n onRejected = onRejected.bind(self);\n }\n\n // Cast self into a Promise to avoid polyfills recursively defining `then`.\n var isNative =\n Promise.toString().indexOf(\"[native code]\") !== -1 &&\n Promise.name === \"Promise\";\n var selfPromise = isNative\n ? self\n : Worker.convert(Object.assign({}, self), Promise.prototype);\n\n // Return the promise, after casting it into a Worker and preserving props.\n var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);\n return Worker.convert(returnVal, self.__proto__);\n };\n\n Worker.prototype.thenExternal = function thenExternal(\n onFulfilled,\n onRejected\n ) {\n // Call `then` and return a standard promise (exits the Worker chain).\n return Promise.prototype.then.call(this, onFulfilled, onRejected);\n };\n\n Worker.prototype.thenList = function thenList(fns) {\n // Queue a series of promise 'factories' into the promise chain.\n var self = this;\n fns.forEach(function thenList_forEach(fn) {\n self = self.thenCore(fn);\n });\n return self;\n };\n\n Worker.prototype[\"catch\"] = function(onRejected) {\n // Bind `this` to the promise handler, call `catch`, and return a Worker.\n if (onRejected) {\n onRejected = onRejected.bind(this);\n }\n var returnVal = Promise.prototype[\"catch\"].call(this, onRejected);\n return Worker.convert(returnVal, this);\n };\n\n Worker.prototype.catchExternal = function catchExternal(onRejected) {\n // Call `catch` and return a standard promise (exits the Worker chain).\n return Promise.prototype[\"catch\"].call(this, onRejected);\n };\n\n Worker.prototype.error = function error(msg) {\n // Throw the error in the Promise chain.\n return this.then(function error_main() {\n throw new Error(msg);\n });\n };\n\n /* ----- ALIASES ----- */\n\n Worker.prototype.using = Worker.prototype.set;\n Worker.prototype.saveAs = Worker.prototype.save;\n Worker.prototype.export = Worker.prototype.output;\n Worker.prototype.run = Worker.prototype.then;\n\n // Get dimensions of a PDF page, as determined by jsPDF.\n jsPDF.getPageSize = function(orientation, unit, format) {\n // Decode options object\n if (typeof orientation === \"object\") {\n var options = orientation;\n orientation = options.orientation;\n unit = options.unit || unit;\n format = options.format || format;\n }\n\n // Default options\n unit = unit || \"mm\";\n format = format || \"a4\";\n orientation = (\"\" + (orientation || \"P\")).toLowerCase();\n var format_as_string = (\"\" + format).toLowerCase();\n\n // Size in pt of various paper formats\n var pageFormats = {\n a0: [2383.94, 3370.39],\n a1: [1683.78, 2383.94],\n a2: [1190.55, 1683.78],\n a3: [841.89, 1190.55],\n a4: [595.28, 841.89],\n a5: [419.53, 595.28],\n a6: [297.64, 419.53],\n a7: [209.76, 297.64],\n a8: [147.4, 209.76],\n a9: [104.88, 147.4],\n a10: [73.7, 104.88],\n b0: [2834.65, 4008.19],\n b1: [2004.09, 2834.65],\n b2: [1417.32, 2004.09],\n b3: [1000.63, 1417.32],\n b4: [708.66, 1000.63],\n b5: [498.9, 708.66],\n b6: [354.33, 498.9],\n b7: [249.45, 354.33],\n b8: [175.75, 249.45],\n b9: [124.72, 175.75],\n b10: [87.87, 124.72],\n c0: [2599.37, 3676.54],\n c1: [1836.85, 2599.37],\n c2: [1298.27, 1836.85],\n c3: [918.43, 1298.27],\n c4: [649.13, 918.43],\n c5: [459.21, 649.13],\n c6: [323.15, 459.21],\n c7: [229.61, 323.15],\n c8: [161.57, 229.61],\n c9: [113.39, 161.57],\n c10: [79.37, 113.39],\n dl: [311.81, 623.62],\n letter: [612, 792],\n \"government-letter\": [576, 756],\n legal: [612, 1008],\n \"junior-legal\": [576, 360],\n ledger: [1224, 792],\n tabloid: [792, 1224],\n \"credit-card\": [153, 243]\n };\n\n var k;\n // Unit conversion\n switch (unit) {\n case \"pt\":\n k = 1;\n break;\n case \"mm\":\n k = 72 / 25.4;\n break;\n case \"cm\":\n k = 72 / 2.54;\n break;\n case \"in\":\n k = 72;\n break;\n case \"px\":\n k = 72 / 96;\n break;\n case \"pc\":\n k = 12;\n break;\n case \"em\":\n k = 12;\n break;\n case \"ex\":\n k = 6;\n break;\n default:\n throw \"Invalid unit: \" + unit;\n }\n var pageHeight = 0;\n var pageWidth = 0;\n\n // Dimensions are stored as user units and converted to points on output\n if (pageFormats.hasOwnProperty(format_as_string)) {\n pageHeight = pageFormats[format_as_string][1] / k;\n pageWidth = pageFormats[format_as_string][0] / k;\n } else {\n try {\n pageHeight = format[1];\n pageWidth = format[0];\n } catch (err) {\n throw new Error(\"Invalid format: \" + format);\n }\n }\n\n var tmp;\n // Handle page orientation\n if (orientation === \"p\" || orientation === \"portrait\") {\n orientation = \"p\";\n if (pageWidth > pageHeight) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else if (orientation === \"l\" || orientation === \"landscape\") {\n orientation = \"l\";\n if (pageHeight > pageWidth) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else {\n throw \"Invalid orientation: \" + orientation;\n }\n\n // Return information (k is the unit conversion ratio from pts)\n var info = {\n width: pageWidth,\n height: pageHeight,\n unit: unit,\n k: k,\n orientation: orientation\n };\n return info;\n };\n\n /**\n * @typedef FontFace\n *\n * The font-face type implements an interface similar to that of the font-face CSS rule,\n * and is used by jsPDF to match fonts when the font property of CanvasRenderingContext2D\n * is updated.\n *\n * All properties expect values similar to those in the font-face CSS rule. A difference\n * is the font-family, which do not need to be enclosed in double-quotes when containing\n * spaces like in CSS.\n *\n * @property {string} family The name of the font-family.\n * @property {string|undefined} style The style that this font-face defines, e.g. 'italic'.\n * @property {string|number|undefined} weight The weight of the font, either as a string or a number (400, 500, 600, e.g.)\n * @property {string|undefined} stretch The stretch of the font, e.g. condensed, normal, expanded.\n * @property {Object[]} src A list of URLs from where fonts of various formats can be fetched.\n * @property {string} [src] url A URL to a font of a specific format.\n * @property {string} [src] format Format of the font referenced by the URL.\n */\n\n /**\n * Generate a PDF from an HTML element or string using.\n *\n * @name html\n * @function\n * @param {HTMLElement|string} source The source HTMLElement or a string containing HTML.\n * @param {Object} [options] Collection of settings\n * @param {function} [options.callback] The mandatory callback-function gets as first parameter the current jsPDF instance\n * @param {(number|number[])=} [options.margin] Page margins [top, right, bottom, left]. Default is 0.\n * @param {(boolean|'slice'|'text')=} [options.autoPaging] The auto paging mode.\n *
      \n *
    • \n * false: Auto paging is disabled.\n *
    • \n *
    • \n * true or 'slice': Will cut shapes or text chunks across page breaks. Will possibly\n * slice text in half, making it difficult to read.\n *
    • \n *
    • \n * 'text': Trys not to cut text in half across page breaks. Works best for documents consisting\n * mostly of a single column of text.\n *
    • \n *
    \n * Default is true.\n * @param {string} [options.filename] name of the file\n * @param {HTMLOptionImage} [options.image] image settings when converting HTML to image\n * @param {Html2CanvasOptions} [options.html2canvas] html2canvas options\n * @param {FontFace[]} [options.fontFaces] A list of font-faces to match when resolving fonts. Fonts will be added to the PDF based on the specified URL. If omitted, the font match algorithm falls back to old algorithm.\n * @param {jsPDF} [options.jsPDF] jsPDF instance\n * @param {number=} [options.x] x position on the PDF document in jsPDF units.\n * @param {number=} [options.y] y position on the PDF document in jsPDF units.\n * @param {number=} [options.width] The target width in the PDF document in jsPDF units. The rendered element will be\n * scaled such that it fits into the specified width. Has no effect if either the html2canvas.scale is\n * specified or the windowWidth option is NOT specified.\n * @param {number=} [options.windowWidth] The window width in CSS pixels. In contrast to the\n * html2canvas.windowWidth option, this option affects the actual container size while rendering and\n * does NOT affect CSS media queries. This option only has an effect, if the width option is also specified.\n *\n * @example\n * var doc = new jsPDF();\n *\n * doc.html(document.body, {\n * callback: function (doc) {\n * doc.save();\n * },\n * x: 10,\n * y: 10\n * });\n */\n jsPDFAPI.html = function(src, options) {\n \"use strict\";\n\n options = options || {};\n options.callback = options.callback || function() {};\n options.html2canvas = options.html2canvas || {};\n options.html2canvas.canvas = options.html2canvas.canvas || this.canvas;\n options.jsPDF = options.jsPDF || this;\n options.fontFaces = options.fontFaces\n ? options.fontFaces.map(normalizeFontFace)\n : null;\n\n // Create a new worker with the given options.\n var worker = new Worker(options);\n\n if (!options.worker) {\n // If worker is not set to true, perform the traditional 'simple' operation.\n return worker.from(src).doCallback();\n } else {\n // Otherwise, return the worker for new Promise-based operation.\n return worker;\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Outline PlugIn\n *\n * Generates a PDF Outline\n * @name outline\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namesOid;\n //var destsGoto = [];\n\n jsPDFAPI.events.push([\n \"postPutResources\",\n function() {\n var pdf = this;\n var rx = /^(\\d+) 0 obj$/;\n\n // Write action goto objects for each page\n // this.outline.destsGoto = [];\n // for (var i = 0; i < totalPages; i++) {\n // var id = pdf.internal.newObject();\n // this.outline.destsGoto.push(id);\n // pdf.internal.write(\"<> endobj\");\n // }\n //\n // for (var i = 0; i < dests.length; i++) {\n // pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0\n // R\");\n // }\n //\n if (this.outline.root.children.length > 0) {\n var lines = pdf.outline.render().split(/\\r\\n/);\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var m = rx.exec(line);\n if (m != null) {\n var oid = m[1];\n pdf.internal.newObjectDeferredBegin(oid, false);\n }\n pdf.internal.write(line);\n }\n }\n\n // This code will write named destination for each page reference\n // (page_1, etc)\n if (this.outline.createNamedDestinations) {\n var totalPages = this.internal.pages.length;\n // WARNING: this assumes jsPDF starts on page 3 and pageIDs\n // follow 5, 7, 9, etc\n // Write destination objects for each page\n var dests = [];\n for (var i = 0; i < totalPages; i++) {\n var id = pdf.internal.newObject();\n dests.push(id);\n var info = pdf.internal.getPageInfo(i + 1);\n pdf.internal.write(\n \"<< /D[\" + info.objId + \" 0 R /XYZ null null null]>> endobj\"\n );\n }\n\n // assign a name for each destination\n var names2Oid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Names [ \");\n for (var i = 0; i < dests.length; i++) {\n pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0 R\");\n }\n pdf.internal.write(\" ] >>\", \"endobj\");\n\n // var kids = pdf.internal.newObject();\n // pdf.internal.write('<< /Kids [ ' + names2Oid + ' 0 R');\n // pdf.internal.write(' ] >>', 'endobj');\n\n namesOid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Dests \" + names2Oid + \" 0 R\");\n pdf.internal.write(\">>\", \"endobj\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putCatalog\",\n function() {\n var pdf = this;\n if (pdf.outline.root.children.length > 0) {\n pdf.internal.write(\n \"/Outlines\",\n this.outline.makeRef(this.outline.root)\n );\n if (this.outline.createNamedDestinations) {\n pdf.internal.write(\"/Names \" + namesOid + \" 0 R\");\n }\n // Open with Bookmarks showing\n // pdf.internal.write(\"/PageMode /UseOutlines\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n var pdf = this;\n\n pdf.outline = {\n createNamedDestinations: false,\n root: {\n children: []\n }\n };\n\n /**\n * Options: pageNumber\n */\n pdf.outline.add = function(parent, title, options) {\n var item = {\n title: title,\n options: options,\n children: []\n };\n if (parent == null) {\n parent = this.root;\n }\n parent.children.push(item);\n return item;\n };\n\n pdf.outline.render = function() {\n this.ctx = {};\n this.ctx.val = \"\";\n this.ctx.pdf = pdf;\n\n this.genIds_r(this.root);\n this.renderRoot(this.root);\n this.renderItems(this.root);\n\n return this.ctx.val;\n };\n\n pdf.outline.genIds_r = function(node) {\n node.id = pdf.internal.newObjectDeferred();\n for (var i = 0; i < node.children.length; i++) {\n this.genIds_r(node.children[i]);\n }\n };\n\n pdf.outline.renderRoot = function(node) {\n this.objStart(node);\n this.line(\"/Type /Outlines\");\n if (node.children.length > 0) {\n this.line(\"/First \" + this.makeRef(node.children[0]));\n this.line(\n \"/Last \" + this.makeRef(node.children[node.children.length - 1])\n );\n }\n this.line(\n \"/Count \" +\n this.count_r(\n {\n count: 0\n },\n node\n )\n );\n this.objEnd();\n };\n\n pdf.outline.renderItems = function(node) {\n var getVerticalCoordinateString = this.ctx.pdf.internal\n .getVerticalCoordinateString;\n for (var i = 0; i < node.children.length; i++) {\n var item = node.children[i];\n this.objStart(item);\n\n this.line(\"/Title \" + this.makeString(item.title));\n\n this.line(\"/Parent \" + this.makeRef(node));\n if (i > 0) {\n this.line(\"/Prev \" + this.makeRef(node.children[i - 1]));\n }\n if (i < node.children.length - 1) {\n this.line(\"/Next \" + this.makeRef(node.children[i + 1]));\n }\n if (item.children.length > 0) {\n this.line(\"/First \" + this.makeRef(item.children[0]));\n this.line(\n \"/Last \" + this.makeRef(item.children[item.children.length - 1])\n );\n }\n\n var count = (this.count = this.count_r(\n {\n count: 0\n },\n item\n ));\n if (count > 0) {\n this.line(\"/Count \" + count);\n }\n\n if (item.options) {\n if (item.options.pageNumber) {\n // Explicit Destination\n //WARNING this assumes page ids are 3,5,7, etc.\n var info = pdf.internal.getPageInfo(item.options.pageNumber);\n this.line(\n \"/Dest \" +\n \"[\" +\n info.objId +\n \" 0 R /XYZ 0 \" +\n getVerticalCoordinateString(0) +\n \" 0]\"\n );\n // this line does not work on all clients (pageNumber instead of page ref)\n //this.line('/Dest ' + '[' + (item.options.pageNumber - 1) + ' /XYZ 0 ' + this.ctx.pdf.internal.pageSize.getHeight() + ' 0]');\n\n // Named Destination\n // this.line('/Dest (page_' + (item.options.pageNumber) + ')');\n\n // Action Destination\n // var id = pdf.internal.newObject();\n // pdf.internal.write('<> endobj');\n // this.line('/A ' + id + ' 0 R' );\n }\n }\n this.objEnd();\n }\n for (var z = 0; z < node.children.length; z++) {\n this.renderItems(node.children[z]);\n }\n };\n\n pdf.outline.line = function(text) {\n this.ctx.val += text + \"\\r\\n\";\n };\n\n pdf.outline.makeRef = function(node) {\n return node.id + \" 0 R\";\n };\n\n pdf.outline.makeString = function(val) {\n return \"(\" + pdf.internal.pdfEscape(val) + \")\";\n };\n\n pdf.outline.objStart = function(node) {\n this.ctx.val += \"\\r\\n\" + node.id + \" 0 obj\" + \"\\r\\n<<\\r\\n\";\n };\n\n pdf.outline.objEnd = function() {\n this.ctx.val += \">> \\r\\n\" + \"endobj\" + \"\\r\\n\";\n };\n\n pdf.outline.count_r = function(ctx, node) {\n for (var i = 0; i < node.children.length; i++) {\n ctx.count++;\n this.count_r(ctx, node.children[i]);\n }\n return ctx.count;\n };\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF jpeg Support PlugIn\n *\n * @name jpeg_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * 0xc0 (SOF) Huffman - Baseline DCT\n * 0xc1 (SOF) Huffman - Extended sequential DCT\n * 0xc2 Progressive DCT (SOF2)\n * 0xc3 Spatial (sequential) lossless (SOF3)\n * 0xc4 Differential sequential DCT (SOF5)\n * 0xc5 Differential progressive DCT (SOF6)\n * 0xc6 Differential spatial (SOF7)\n * 0xc7\n */\n var markers = [0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7];\n\n //takes a string imgData containing the raw bytes of\n //a jpeg image and returns [width, height]\n //Algorithm from: http://www.64lines.com/jpeg-width-height\n var getJpegInfo = function(imgData) {\n var width, height, numcomponents;\n var blockLength = imgData.charCodeAt(4) * 256 + imgData.charCodeAt(5);\n var len = imgData.length;\n var result = { width: 0, height: 0, numcomponents: 1 };\n for (var i = 4; i < len; i += 2) {\n i += blockLength;\n if (markers.indexOf(imgData.charCodeAt(i + 1)) !== -1) {\n height = imgData.charCodeAt(i + 5) * 256 + imgData.charCodeAt(i + 6);\n width = imgData.charCodeAt(i + 7) * 256 + imgData.charCodeAt(i + 8);\n numcomponents = imgData.charCodeAt(i + 9);\n result = { width: width, height: height, numcomponents: numcomponents };\n break;\n } else {\n blockLength =\n imgData.charCodeAt(i + 2) * 256 + imgData.charCodeAt(i + 3);\n }\n }\n return result;\n };\n\n /**\n * @ignore\n */\n jsPDFAPI.processJPEG = function(\n data,\n index,\n alias,\n compression,\n dataAsBinaryString,\n colorSpace\n ) {\n var filter = this.decode.DCT_DECODE,\n bpc = 8,\n dims,\n result = null;\n\n if (\n typeof data === \"string\" ||\n this.__addimage__.isArrayBuffer(data) ||\n this.__addimage__.isArrayBufferView(data)\n ) {\n // if we already have a stored binary string rep use that\n data = dataAsBinaryString || data;\n data = this.__addimage__.isArrayBuffer(data)\n ? new Uint8Array(data)\n : data;\n data = this.__addimage__.isArrayBufferView(data)\n ? this.__addimage__.arrayBufferToBinaryString(data)\n : data;\n\n dims = getJpegInfo(data);\n switch (dims.numcomponents) {\n case 1:\n colorSpace = this.color_spaces.DEVICE_GRAY;\n break;\n case 4:\n colorSpace = this.color_spaces.DEVICE_CMYK;\n break;\n case 3:\n colorSpace = this.color_spaces.DEVICE_RGB;\n break;\n }\n\n result = {\n data: data,\n width: dims.width,\n height: dims.height,\n colorSpace: colorSpace,\n bitsPerComponent: bpc,\n filter: filter,\n index: index,\n alias: alias\n };\n }\n return result;\n };\n})(jsPDF.API);\n","// Generated by CoffeeScript 1.4.0\n\n/**\n * @license\n * PNG.js\n * Copyright (c) 2011 Devon Govett\n * MIT LICENSE\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { unzlibSync } from \"./fflate.js\";\nimport { globalObject } from \"./globalObject.js\";\n\nvar PNG = (function() {\n var APNG_BLEND_OP_OVER,\n APNG_BLEND_OP_SOURCE,\n APNG_DISPOSE_OP_BACKGROUND,\n APNG_DISPOSE_OP_NONE,\n APNG_DISPOSE_OP_PREVIOUS,\n makeImage,\n scratchCanvas,\n scratchCtx;\n\n APNG_DISPOSE_OP_NONE = 0;\n\n APNG_DISPOSE_OP_BACKGROUND = 1;\n\n APNG_DISPOSE_OP_PREVIOUS = 2;\n\n APNG_BLEND_OP_SOURCE = 0;\n\n APNG_BLEND_OP_OVER = 1;\n\n function PNG(data) {\n var chunkSize,\n colors,\n palLen,\n delayDen,\n delayNum,\n frame,\n i,\n index,\n key,\n section,\n palShort,\n text,\n _i,\n _j,\n _ref;\n this.data = data;\n this.pos = 8;\n this.palette = [];\n this.imgData = [];\n this.transparency = {};\n this.animation = null;\n this.text = {};\n frame = null;\n while (true) {\n chunkSize = this.readUInt32();\n section = function() {\n var _i, _results;\n _results = [];\n for (i = _i = 0; _i < 4; i = ++_i) {\n _results.push(String.fromCharCode(this.data[this.pos++]));\n }\n return _results;\n }\n .call(this)\n .join(\"\");\n switch (section) {\n case \"IHDR\":\n this.width = this.readUInt32();\n this.height = this.readUInt32();\n this.bits = this.data[this.pos++];\n this.colorType = this.data[this.pos++];\n this.compressionMethod = this.data[this.pos++];\n this.filterMethod = this.data[this.pos++];\n this.interlaceMethod = this.data[this.pos++];\n break;\n case \"acTL\":\n this.animation = {\n numFrames: this.readUInt32(),\n numPlays: this.readUInt32() || Infinity,\n frames: []\n };\n break;\n case \"PLTE\":\n this.palette = this.read(chunkSize);\n break;\n case \"fcTL\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.pos += 4;\n frame = {\n width: this.readUInt32(),\n height: this.readUInt32(),\n xOffset: this.readUInt32(),\n yOffset: this.readUInt32()\n };\n delayNum = this.readUInt16();\n delayDen = this.readUInt16() || 100;\n frame.delay = (1000 * delayNum) / delayDen;\n frame.disposeOp = this.data[this.pos++];\n frame.blendOp = this.data[this.pos++];\n frame.data = [];\n break;\n case \"IDAT\":\n case \"fdAT\":\n if (section === \"fdAT\") {\n this.pos += 4;\n chunkSize -= 4;\n }\n data = (frame != null ? frame.data : void 0) || this.imgData;\n for (\n i = _i = 0;\n 0 <= chunkSize ? _i < chunkSize : _i > chunkSize;\n i = 0 <= chunkSize ? ++_i : --_i\n ) {\n data.push(this.data[this.pos++]);\n }\n break;\n case \"tRNS\":\n this.transparency = {};\n switch (this.colorType) {\n case 3:\n palLen = this.palette.length / 3;\n this.transparency.indexed = this.read(chunkSize);\n if (this.transparency.indexed.length > palLen)\n throw new Error(\"More transparent colors than palette size\");\n /*\n * According to the PNG spec trns should be increased to the same size as palette if shorter\n */\n //palShort = 255 - this.transparency.indexed.length;\n palShort = palLen - this.transparency.indexed.length;\n if (palShort > 0) {\n for (\n i = _j = 0;\n 0 <= palShort ? _j < palShort : _j > palShort;\n i = 0 <= palShort ? ++_j : --_j\n ) {\n this.transparency.indexed.push(255);\n }\n }\n break;\n case 0:\n this.transparency.grayscale = this.read(chunkSize)[0];\n break;\n case 2:\n this.transparency.rgb = this.read(chunkSize);\n }\n break;\n case \"tEXt\":\n text = this.read(chunkSize);\n index = text.indexOf(0);\n key = String.fromCharCode.apply(String, text.slice(0, index));\n this.text[key] = String.fromCharCode.apply(\n String,\n text.slice(index + 1)\n );\n break;\n case \"IEND\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.colors = function() {\n switch (this.colorType) {\n case 0:\n case 3:\n case 4:\n return 1;\n case 2:\n case 6:\n return 3;\n }\n }.call(this);\n this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6;\n colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n this.pixelBitlength = this.bits * colors;\n this.colorSpace = function() {\n switch (this.colors) {\n case 1:\n return \"DeviceGray\";\n case 3:\n return \"DeviceRGB\";\n }\n }.call(this);\n this.imgData = new Uint8Array(this.imgData);\n return;\n default:\n this.pos += chunkSize;\n }\n this.pos += 4;\n if (this.pos > this.data.length) {\n throw new Error(\"Incomplete or corrupt PNG file\");\n }\n }\n }\n\n PNG.prototype.read = function(bytes) {\n var i, _i, _results;\n _results = [];\n for (\n i = _i = 0;\n 0 <= bytes ? _i < bytes : _i > bytes;\n i = 0 <= bytes ? ++_i : --_i\n ) {\n _results.push(this.data[this.pos++]);\n }\n return _results;\n };\n\n PNG.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.data[this.pos++] << 24;\n b2 = this.data[this.pos++] << 16;\n b3 = this.data[this.pos++] << 8;\n b4 = this.data[this.pos++];\n return b1 | b2 | b3 | b4;\n };\n\n PNG.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.data[this.pos++] << 8;\n b2 = this.data[this.pos++];\n return b1 | b2;\n };\n\n PNG.prototype.decodePixels = function(data) {\n var pixelBytes = this.pixelBitlength / 8;\n var fullPixels = new Uint8Array(this.width * this.height * pixelBytes);\n var pos = 0;\n var _this = this;\n\n if (data == null) {\n data = this.imgData;\n }\n if (data.length === 0) {\n return new Uint8Array(0);\n }\n\n data = unzlibSync(data);\n function pass(x0, y0, dx, dy) {\n var abyte,\n c,\n col,\n i,\n left,\n length,\n p,\n pa,\n paeth,\n pb,\n pc,\n pixels,\n row,\n scanlineLength,\n upper,\n upperLeft,\n _i,\n _j,\n _k,\n _l,\n _m;\n var w = Math.ceil((_this.width - x0) / dx),\n h = Math.ceil((_this.height - y0) / dy);\n var isFull = _this.width == w && _this.height == h;\n scanlineLength = pixelBytes * w;\n pixels = isFull ? fullPixels : new Uint8Array(scanlineLength * h);\n length = data.length;\n row = 0;\n c = 0;\n while (row < h && pos < length) {\n switch (data[pos++]) {\n case 0:\n for (i = _i = 0; _i < scanlineLength; i = _i += 1) {\n pixels[c++] = data[pos++];\n }\n break;\n case 1:\n for (i = _j = 0; _j < scanlineLength; i = _j += 1) {\n abyte = data[pos++];\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n pixels[c++] = (abyte + left) % 256;\n }\n break;\n case 2:\n for (i = _k = 0; _k < scanlineLength; i = _k += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (upper + abyte) % 256;\n }\n break;\n case 3:\n for (i = _l = 0; _l < scanlineLength; i = _l += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (abyte + Math.floor((left + upper) / 2)) % 256;\n }\n break;\n case 4:\n for (i = _m = 0; _m < scanlineLength; i = _m += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n if (row === 0) {\n upper = upperLeft = 0;\n } else {\n upper =\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n upperLeft =\n col &&\n pixels[\n (row - 1) * scanlineLength +\n (col - 1) * pixelBytes +\n (i % pixelBytes)\n ];\n }\n p = left + upper - upperLeft;\n pa = Math.abs(p - left);\n pb = Math.abs(p - upper);\n pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n paeth = left;\n } else if (pb <= pc) {\n paeth = upper;\n } else {\n paeth = upperLeft;\n }\n pixels[c++] = (abyte + paeth) % 256;\n }\n break;\n default:\n throw new Error(\"Invalid filter algorithm: \" + data[pos - 1]);\n }\n if (!isFull) {\n var fullPos = ((y0 + row * dy) * _this.width + x0) * pixelBytes;\n var partPos = row * scanlineLength;\n for (i = 0; i < w; i += 1) {\n for (var j = 0; j < pixelBytes; j += 1)\n fullPixels[fullPos++] = pixels[partPos++];\n fullPos += (dx - 1) * pixelBytes;\n }\n }\n row++;\n }\n }\n if (_this.interlaceMethod == 1) {\n /*\n 1 6 4 6 2 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n 3 6 4 6 3 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n */\n pass(0, 0, 8, 8); // 1\n /* NOTE these seem to follow the pattern:\n * pass(x, 0, 2*x, 2*x);\n * pass(0, x, x, 2*x);\n * with x being 4, 2, 1.\n */\n pass(4, 0, 8, 8); // 2\n pass(0, 4, 4, 8); // 3\n\n pass(2, 0, 4, 4); // 4\n pass(0, 2, 2, 4); // 5\n\n pass(1, 0, 2, 2); // 6\n pass(0, 1, 1, 2); // 7\n } else {\n pass(0, 0, 1, 1);\n }\n return fullPixels;\n };\n\n PNG.prototype.decodePalette = function() {\n var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1;\n palette = this.palette;\n transparency = this.transparency.indexed || [];\n ret = new Uint8Array((transparency.length || 0) + palette.length);\n pos = 0;\n length = palette.length;\n c = 0;\n for (i = _i = 0, _ref = length; _i < _ref; i = _i += 3) {\n ret[pos++] = palette[i];\n ret[pos++] = palette[i + 1];\n ret[pos++] = palette[i + 2];\n ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255;\n }\n return ret;\n };\n\n PNG.prototype.copyToImageData = function(imageData, pixels) {\n var alpha, colors, data, i, input, j, k, length, palette, v, _ref;\n colors = this.colors;\n palette = null;\n alpha = this.hasAlphaChannel;\n if (this.palette.length) {\n palette =\n (_ref = this._decodedPalette) != null\n ? _ref\n : (this._decodedPalette = this.decodePalette());\n colors = 4;\n alpha = true;\n }\n data = imageData.data || imageData;\n length = data.length;\n input = palette || pixels;\n i = j = 0;\n if (colors === 1) {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n v = input[k++];\n data[i++] = v;\n data[i++] = v;\n data[i++] = v;\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n } else {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n }\n };\n\n PNG.prototype.decode = function() {\n var ret;\n ret = new Uint8Array(this.width * this.height * 4);\n this.copyToImageData(ret, this.decodePixels());\n return ret;\n };\n\n var hasBrowserCanvas = function() {\n if (Object.prototype.toString.call(globalObject) === \"[object Window]\") {\n try {\n scratchCanvas = globalObject.document.createElement(\"canvas\");\n scratchCtx = scratchCanvas.getContext(\"2d\");\n } catch (e) {\n return false;\n }\n return true;\n }\n return false;\n };\n\n hasBrowserCanvas();\n\n makeImage = function(imageData) {\n if (hasBrowserCanvas() === true) {\n var img;\n scratchCtx.width = imageData.width;\n scratchCtx.height = imageData.height;\n scratchCtx.clearRect(0, 0, imageData.width, imageData.height);\n scratchCtx.putImageData(imageData, 0, 0);\n img = new Image();\n img.src = scratchCanvas.toDataURL();\n return img;\n }\n throw new Error(\"This method requires a Browser with Canvas-capability.\");\n };\n\n PNG.prototype.decodeFrames = function(ctx) {\n var frame, i, imageData, pixels, _i, _len, _ref, _results;\n if (!this.animation) {\n return;\n }\n _ref = this.animation.frames;\n _results = [];\n for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n frame = _ref[i];\n imageData = ctx.createImageData(frame.width, frame.height);\n pixels = this.decodePixels(new Uint8Array(frame.data));\n this.copyToImageData(imageData, pixels);\n frame.imageData = imageData;\n _results.push((frame.image = makeImage(imageData)));\n }\n return _results;\n };\n\n PNG.prototype.renderFrame = function(ctx, number) {\n var frame, frames, prev;\n frames = this.animation.frames;\n frame = frames[number];\n prev = frames[number - 1];\n if (number === 0) {\n ctx.clearRect(0, 0, this.width, this.height);\n }\n if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_BACKGROUND\n ) {\n ctx.clearRect(prev.xOffset, prev.yOffset, prev.width, prev.height);\n } else if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_PREVIOUS\n ) {\n ctx.putImageData(prev.imageData, prev.xOffset, prev.yOffset);\n }\n if (frame.blendOp === APNG_BLEND_OP_SOURCE) {\n ctx.clearRect(frame.xOffset, frame.yOffset, frame.width, frame.height);\n }\n return ctx.drawImage(frame.image, frame.xOffset, frame.yOffset);\n };\n\n PNG.prototype.animate = function(ctx) {\n var doFrame,\n frameNumber,\n frames,\n numFrames,\n numPlays,\n _ref,\n _this = this;\n frameNumber = 0;\n (_ref = this.animation),\n (numFrames = _ref.numFrames),\n (frames = _ref.frames),\n (numPlays = _ref.numPlays);\n return (doFrame = function() {\n var f, frame;\n f = frameNumber++ % numFrames;\n frame = frames[f];\n _this.renderFrame(ctx, f);\n if (numFrames > 1 && frameNumber / numFrames < numPlays) {\n return (_this.animation._timeout = setTimeout(doFrame, frame.delay));\n }\n })();\n };\n\n PNG.prototype.stopAnimation = function() {\n var _ref;\n return clearTimeout(\n (_ref = this.animation) != null ? _ref._timeout : void 0\n );\n };\n\n PNG.prototype.render = function(canvas) {\n var ctx, data;\n if (canvas._png) {\n canvas._png.stopAnimation();\n }\n canvas._png = this;\n canvas.width = this.width;\n canvas.height = this.height;\n ctx = canvas.getContext(\"2d\");\n if (this.animation) {\n this.decodeFrames(ctx);\n return this.animate(ctx);\n } else {\n data = ctx.createImageData(this.width, this.height);\n this.copyToImageData(data, this.decodePixels());\n return ctx.putImageData(data, 0, 0);\n }\n };\n\n return PNG;\n})();\n\nexport { PNG };\n","/** @license\n * MIT license.\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF split_text_to_size plugin\n *\n * @name split_text_to_size\n * @module\n */\n(function(API) {\n \"use strict\";\n /**\n * Returns an array of length matching length of the 'word' string, with each\n * cell occupied by the width of the char in that position.\n *\n * @name getCharWidthsArray\n * @function\n * @param {string} text\n * @param {Object} options\n * @returns {Array}\n */\n var getCharWidthsArray = (API.getCharWidthsArray = function(text, options) {\n options = options || {};\n\n var activeFont = options.font || this.internal.getFont();\n var fontSize = options.fontSize || this.internal.getFontSize();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n\n var widths = options.widths\n ? options.widths\n : activeFont.metadata.Unicode.widths;\n var widthsFractionOf = widths.fof ? widths.fof : 1;\n var kerning = options.kerning\n ? options.kerning\n : activeFont.metadata.Unicode.kerning;\n var kerningFractionOf = kerning.fof ? kerning.fof : 1;\n var doKerning = options.doKerning === false ? false : true;\n var kerningValue = 0;\n\n var i;\n var length = text.length;\n var char_code;\n var prior_char_code = 0; //for kerning\n var default_char_width = widths[0] || widthsFractionOf;\n var output = [];\n\n for (i = 0; i < length; i++) {\n char_code = text.charCodeAt(i);\n\n if (typeof activeFont.metadata.widthOfString === \"function\") {\n output.push(\n (activeFont.metadata.widthOfGlyph(\n activeFont.metadata.characterToGlyph(char_code)\n ) +\n charSpace * (1000 / fontSize) || 0) / 1000\n );\n } else {\n if (\n doKerning &&\n typeof kerning[char_code] === \"object\" &&\n !isNaN(parseInt(kerning[char_code][prior_char_code], 10))\n ) {\n kerningValue =\n kerning[char_code][prior_char_code] / kerningFractionOf;\n } else {\n kerningValue = 0;\n }\n output.push(\n (widths[char_code] || default_char_width) / widthsFractionOf +\n kerningValue\n );\n }\n prior_char_code = char_code;\n }\n\n return output;\n });\n\n /**\n * Returns a widths of string in a given font, if the font size is set as 1 point.\n *\n * In other words, this is \"proportional\" value. For 1 unit of font size, the length\n * of the string will be that much.\n *\n * Multiply by font size to get actual width in *points*\n * Then divide by 72 to get inches or divide by (72/25.6) to get 'mm' etc.\n *\n * @name getStringUnitWidth\n * @public\n * @function\n * @param {string} text\n * @param {string} options\n * @returns {number} result\n */\n var getStringUnitWidth = (API.getStringUnitWidth = function(text, options) {\n options = options || {};\n\n var fontSize = options.fontSize || this.internal.getFontSize();\n var font = options.font || this.internal.getFont();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n var result = 0;\n\n if (API.processArabic) {\n text = API.processArabic(text);\n }\n\n if (typeof font.metadata.widthOfString === \"function\") {\n result =\n font.metadata.widthOfString(text, fontSize, charSpace) / fontSize;\n } else {\n result = getCharWidthsArray\n .apply(this, arguments)\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n }\n return result;\n });\n\n /**\n returns array of lines\n */\n var splitLongWord = function(word, widths_array, firstLineMaxLen, maxLen) {\n var answer = [];\n\n // 1st, chop off the piece that can fit on the hanging line.\n var i = 0,\n l = word.length,\n workingLen = 0;\n while (i !== l && workingLen + widths_array[i] < firstLineMaxLen) {\n workingLen += widths_array[i];\n i++;\n }\n // this is first line.\n answer.push(word.slice(0, i));\n\n // 2nd. Split the rest into maxLen pieces.\n var startOfLine = i;\n workingLen = 0;\n while (i !== l) {\n if (workingLen + widths_array[i] > maxLen) {\n answer.push(word.slice(startOfLine, i));\n workingLen = 0;\n startOfLine = i;\n }\n workingLen += widths_array[i];\n i++;\n }\n if (startOfLine !== i) {\n answer.push(word.slice(startOfLine, i));\n }\n\n return answer;\n };\n\n // Note, all sizing inputs for this function must be in \"font measurement units\"\n // By default, for PDF, it's \"point\".\n var splitParagraphIntoLines = function(text, maxlen, options) {\n // at this time works only on Western scripts, ones with space char\n // separating the words. Feel free to expand.\n\n if (!options) {\n options = {};\n }\n\n var line = [],\n lines = [line],\n line_length = options.textIndent || 0,\n separator_length = 0,\n current_word_length = 0,\n word,\n widths_array,\n words = text.split(\" \"),\n spaceCharWidth = getCharWidthsArray.apply(this, [\" \", options])[0],\n i,\n l,\n tmp,\n lineIndent;\n\n if (options.lineIndent === -1) {\n lineIndent = words[0].length + 2;\n } else {\n lineIndent = options.lineIndent || 0;\n }\n if (lineIndent) {\n var pad = Array(lineIndent).join(\" \"),\n wrds = [];\n words.map(function(wrd) {\n wrd = wrd.split(/\\s*\\n/);\n if (wrd.length > 1) {\n wrds = wrds.concat(\n wrd.map(function(wrd, idx) {\n return (idx && wrd.length ? \"\\n\" : \"\") + wrd;\n })\n );\n } else {\n wrds.push(wrd[0]);\n }\n });\n words = wrds;\n lineIndent = getStringUnitWidth.apply(this, [pad, options]);\n }\n\n for (i = 0, l = words.length; i < l; i++) {\n var force = 0;\n\n word = words[i];\n if (lineIndent && word[0] == \"\\n\") {\n word = word.substr(1);\n force = 1;\n }\n widths_array = getCharWidthsArray.apply(this, [word, options]);\n current_word_length = widths_array.reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n\n if (\n line_length + separator_length + current_word_length > maxlen ||\n force\n ) {\n if (current_word_length > maxlen) {\n // this happens when you have space-less long URLs for example.\n // we just chop these to size. We do NOT insert hiphens\n tmp = splitLongWord.apply(this, [\n word,\n widths_array,\n maxlen - (line_length + separator_length),\n maxlen\n ]);\n // first line we add to existing line object\n line.push(tmp.shift()); // it's ok to have extra space indicator there\n // last line we make into new line object\n line = [tmp.pop()];\n // lines in the middle we apped to lines object as whole lines\n while (tmp.length) {\n lines.push([tmp.shift()]); // single fragment occupies whole line\n }\n current_word_length = widths_array\n .slice(word.length - (line[0] ? line[0].length : 0))\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n } else {\n // just put it on a new line\n line = [word];\n }\n\n // now we attach new line to lines\n lines.push(line);\n line_length = current_word_length + lineIndent;\n separator_length = spaceCharWidth;\n } else {\n line.push(word);\n\n line_length += separator_length + current_word_length;\n separator_length = spaceCharWidth;\n }\n }\n\n var postProcess;\n if (lineIndent) {\n postProcess = function(ln, idx) {\n return (idx ? pad : \"\") + ln.join(\" \");\n };\n } else {\n postProcess = function(ln) {\n return ln.join(\" \");\n };\n }\n\n return lines.map(postProcess);\n };\n\n /**\n * Splits a given string into an array of strings. Uses 'size' value\n * (in measurement units declared as default for the jsPDF instance)\n * and the font's \"widths\" and \"Kerning\" tables, where available, to\n * determine display length of a given string for a given font.\n *\n * We use character's 100% of unit size (height) as width when Width\n * table or other default width is not available.\n *\n * @name splitTextToSize\n * @public\n * @function\n * @param {string} text Unencoded, regular JavaScript (Unicode, UTF-16 / UCS-2) string.\n * @param {number} size Nominal number, measured in units default to this instance of jsPDF.\n * @param {Object} options Optional flags needed for chopper to do the right thing.\n * @returns {Array} array Array with strings chopped to size.\n */\n API.splitTextToSize = function(text, maxlen, options) {\n \"use strict\";\n\n options = options || {};\n\n var fsize = options.fontSize || this.internal.getFontSize(),\n newOptions = function(options) {\n var widths = {\n 0: 1\n },\n kerning = {};\n\n if (!options.widths || !options.kerning) {\n var f = this.internal.getFont(options.fontName, options.fontStyle),\n encoding = \"Unicode\";\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE\n // Actual JavaScript-native String's 16bit char codes used.\n // no multi-byte logic here\n\n if (f.metadata[encoding]) {\n return {\n widths: f.metadata[encoding].widths || widths,\n kerning: f.metadata[encoding].kerning || kerning\n };\n } else {\n return {\n font: f.metadata,\n fontSize: this.internal.getFontSize(),\n charSpace: this.internal.getCharSpace()\n };\n }\n } else {\n return {\n widths: options.widths,\n kerning: options.kerning\n };\n }\n }.call(this, options);\n\n // first we split on end-of-line chars\n var paragraphs;\n if (Array.isArray(text)) {\n paragraphs = text;\n } else {\n paragraphs = String(text).split(/\\r?\\n/);\n }\n\n // now we convert size (max length of line) into \"font size units\"\n // at present time, the \"font size unit\" is always 'point'\n // 'proportional' means, \"in proportion to font size\"\n var fontUnit_maxLen = (1.0 * this.internal.scaleFactor * maxlen) / fsize;\n // at this time, fsize is always in \"points\" regardless of the default measurement unit of the doc.\n // this may change in the future?\n // until then, proportional_maxlen is likely to be in 'points'\n\n // If first line is to be indented (shorter or longer) than maxLen\n // we indicate that by using CSS-style \"text-indent\" option.\n // here it's in font units too (which is likely 'points')\n // it can be negative (which makes the first line longer than maxLen)\n newOptions.textIndent = options.textIndent\n ? (options.textIndent * 1.0 * this.internal.scaleFactor) / fsize\n : 0;\n newOptions.lineIndent = options.lineIndent;\n\n var i,\n l,\n output = [];\n for (i = 0, l = paragraphs.length; i < l; i++) {\n output = output.concat(\n splitParagraphIntoLines.apply(this, [\n paragraphs[i],\n fontUnit_maxLen,\n newOptions\n ])\n );\n }\n\n return output;\n };\n})(jsPDF.API);\n","/**\n * @license\n * (c) Dean McNamee , 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression. It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */\n\n\"use strict\";\n\nimport { console } from \"./console.js\";\n\nfunction GifWriter(buf, width, height, gopts) {\n var p = 0;\n\n var gopts = gopts === undefined ? {} : gopts;\n var loop_count = gopts.loop === undefined ? null : gopts.loop;\n var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n function check_palette_and_num_colors(palette) {\n var num_colors = palette.length;\n if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors - 1)) {\n throw new Error(\n \"Invalid code/color length, must be power of 2 and 2 .. 256.\"\n );\n }\n return num_colors;\n }\n\n // - Header.\n buf[p++] = 0x47;\n buf[p++] = 0x49;\n buf[p++] = 0x46; // GIF\n buf[p++] = 0x38;\n buf[p++] = 0x39;\n buf[p++] = 0x61; // 89a\n\n // Handling of Global Color Table (palette) and background index.\n var gp_num_colors_pow2 = 0;\n var background = 0;\n if (global_palette !== null) {\n var gp_num_colors = check_palette_and_num_colors(global_palette);\n while ((gp_num_colors >>= 1)) ++gp_num_colors_pow2;\n gp_num_colors = 1 << gp_num_colors_pow2;\n --gp_num_colors_pow2;\n if (gopts.background !== undefined) {\n background = gopts.background;\n if (background >= gp_num_colors)\n throw new Error(\"Background index out of range.\");\n // The GIF spec states that a background index of 0 should be ignored, so\n // this is probably a mistake and you really want to set it to another\n // slot in the palette. But actually in the end most browsers, etc end\n // up ignoring this almost completely (including for dispose background).\n if (background === 0)\n throw new Error(\"Background index explicitly passed as 0.\");\n }\n }\n\n // - Logical Screen Descriptor.\n // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n buf[p++] = width & 0xff;\n buf[p++] = (width >> 8) & 0xff;\n buf[p++] = height & 0xff;\n buf[p++] = (height >> 8) & 0xff;\n // NOTE: Indicates 0-bpp original color resolution (unused?).\n buf[p++] = (global_palette !== null ? 0x80 : 0) | gp_num_colors_pow2; // Global Color Table Flag. // NOTE: No sort flag (unused?).\n buf[p++] = background; // Background Color Index.\n buf[p++] = 0; // Pixel aspect ratio (unused?).\n\n // - Global Color Table\n if (global_palette !== null) {\n for (var i = 0, il = global_palette.length; i < il; ++i) {\n var rgb = global_palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n if (loop_count !== null) {\n // Netscape block for looping.\n if (loop_count < 0 || loop_count > 65535)\n throw new Error(\"Loop count invalid.\");\n // Extension code, label, and length.\n buf[p++] = 0x21;\n buf[p++] = 0xff;\n buf[p++] = 0x0b;\n // NETSCAPE2.0\n buf[p++] = 0x4e;\n buf[p++] = 0x45;\n buf[p++] = 0x54;\n buf[p++] = 0x53;\n buf[p++] = 0x43;\n buf[p++] = 0x41;\n buf[p++] = 0x50;\n buf[p++] = 0x45;\n buf[p++] = 0x32;\n buf[p++] = 0x2e;\n buf[p++] = 0x30;\n // Sub-block\n buf[p++] = 0x03;\n buf[p++] = 0x01;\n buf[p++] = loop_count & 0xff;\n buf[p++] = (loop_count >> 8) & 0xff;\n buf[p++] = 0x00; // Terminator.\n }\n\n var ended = false;\n\n this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n if (ended === true) {\n --p;\n ended = false;\n } // Un-end.\n\n opts = opts === undefined ? {} : opts;\n\n // TODO(deanm): Bounds check x, y. Do they need to be within the virtual\n // canvas width/height, I imagine?\n if (x < 0 || y < 0 || x > 65535 || y > 65535)\n throw new Error(\"x/y invalid.\");\n\n if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n if (indexed_pixels.length < w * h)\n throw new Error(\"Not enough pixels for the frame size.\");\n\n var using_local_palette = true;\n var palette = opts.palette;\n if (palette === undefined || palette === null) {\n using_local_palette = false;\n palette = global_palette;\n }\n\n if (palette === undefined || palette === null)\n throw new Error(\"Must supply either a local or global palette.\");\n\n var num_colors = check_palette_and_num_colors(palette);\n\n // Compute the min_code_size (power of 2), destroying num_colors.\n var min_code_size = 0;\n while ((num_colors >>= 1)) ++min_code_size;\n num_colors = 1 << min_code_size; // Now we can easily get it back.\n\n var delay = opts.delay === undefined ? 0 : opts.delay;\n\n // From the spec:\n // 0 - No disposal specified. The decoder is\n // not required to take any action.\n // 1 - Do not dispose. The graphic is to be left\n // in place.\n // 2 - Restore to background color. The area used by the\n // graphic must be restored to the background color.\n // 3 - Restore to previous. The decoder is required to\n // restore the area overwritten by the graphic with\n // what was there prior to rendering the graphic.\n // 4-7 - To be defined.\n // NOTE(deanm): Dispose background doesn't really work, apparently most\n // browsers ignore the background palette index and clear to transparency.\n var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n if (disposal < 0 || disposal > 3)\n // 4-7 is reserved.\n throw new Error(\"Disposal out of range.\");\n\n var use_transparency = false;\n var transparent_index = 0;\n if (opts.transparent !== undefined && opts.transparent !== null) {\n use_transparency = true;\n transparent_index = opts.transparent;\n if (transparent_index < 0 || transparent_index >= num_colors)\n throw new Error(\"Transparent color index.\");\n }\n\n if (disposal !== 0 || use_transparency || delay !== 0) {\n // - Graphics Control Extension\n buf[p++] = 0x21;\n buf[p++] = 0xf9; // Extension / Label.\n buf[p++] = 4; // Byte size.\n\n buf[p++] = (disposal << 2) | (use_transparency === true ? 1 : 0);\n buf[p++] = delay & 0xff;\n buf[p++] = (delay >> 8) & 0xff;\n buf[p++] = transparent_index; // Transparent color index.\n buf[p++] = 0; // Block Terminator.\n }\n\n // - Image Descriptor\n buf[p++] = 0x2c; // Image Seperator.\n buf[p++] = x & 0xff;\n buf[p++] = (x >> 8) & 0xff; // Left.\n buf[p++] = y & 0xff;\n buf[p++] = (y >> 8) & 0xff; // Top.\n buf[p++] = w & 0xff;\n buf[p++] = (w >> 8) & 0xff;\n buf[p++] = h & 0xff;\n buf[p++] = (h >> 8) & 0xff;\n // NOTE: No sort flag (unused?).\n // TODO(deanm): Support interlace.\n buf[p++] = using_local_palette === true ? 0x80 | (min_code_size - 1) : 0;\n\n // - Local Color Table\n if (using_local_palette === true) {\n for (var i = 0, il = palette.length; i < il; ++i) {\n var rgb = palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n p = GifWriterOutputLZWCodeStream(\n buf,\n p,\n min_code_size < 2 ? 2 : min_code_size,\n indexed_pixels\n );\n\n return p;\n };\n\n this.end = function() {\n if (ended === false) {\n buf[p++] = 0x3b; // Trailer.\n ended = true;\n }\n return p;\n };\n\n this.getOutputBuffer = function() {\n return buf;\n };\n this.setOutputBuffer = function(v) {\n buf = v;\n };\n this.getOutputBufferPosition = function() {\n return p;\n };\n this.setOutputBufferPosition = function(v) {\n p = v;\n };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n buf[p++] = min_code_size;\n var cur_subblock = p++; // Pointing at the length field.\n\n var clear_code = 1 << min_code_size;\n var code_mask = clear_code - 1;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n var cur_shift = 0;\n // We have at most 12-bit codes, so we should have to hold a max of 19\n // bits here (and then we would write out).\n var cur = 0;\n\n function emit_bytes_to_buffer(bit_block_size) {\n while (cur_shift >= bit_block_size) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n }\n\n function emit_code(c) {\n cur |= c << cur_shift;\n cur_shift += cur_code_size;\n emit_bytes_to_buffer(8);\n }\n\n // I am not an expert on the topic, and I don't want to write a thesis.\n // However, it is good to outline here the basic algorithm and the few data\n // structures and optimizations here that make this implementation fast.\n // The basic idea behind LZW is to build a table of previously seen runs\n // addressed by a short id (herein called output code). All data is\n // referenced by a code, which represents one or more values from the\n // original input stream. All input bytes can be referenced as the same\n // value as an output code. So if you didn't want any compression, you\n // could more or less just output the original bytes as codes (there are\n // some details to this, but it is the idea). In order to achieve\n // compression, values greater then the input range (codes can be up to\n // 12-bit while input only 8-bit) represent a sequence of previously seen\n // inputs. The decompressor is able to build the same mapping while\n // decoding, so there is always a shared common knowledge between the\n // encoding and decoder, which is also important for \"timing\" aspects like\n // how to handle variable bit width code encoding.\n //\n // One obvious but very important consequence of the table system is there\n // is always a unique id (at most 12-bits) to map the runs. 'A' might be\n // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc. This relationship\n // can be used for an effecient lookup strategy for the code mapping. We\n // need to know if a run has been seen before, and be able to map that run\n // to the output code. Since we start with known unique ids (input bytes),\n // and then from those build more unique ids (table entries), we can\n // continue this chain (almost like a linked list) to always have small\n // integer values that represent the current byte chains in the encoder.\n // This means instead of tracking the input bytes (AAAABCD) to know our\n // current state, we can track the table entry for AAAABC (it is guaranteed\n // to exist by the nature of the algorithm) and the next character D.\n // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n // unique. This allows us to create a simple lookup key for mapping input\n // sequences to codes (table indices) without having to store or search\n // any of the code sequences. So if 'AAAA' has a table entry of 12, the\n // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n // key. This leads to a integer value at most 20-bits, which can always\n // fit in an SMI value and be used as a fast sparse array / object key.\n\n // Output code for the current contents of the index buffer.\n var ib_code = index_stream[0] & code_mask; // Load first input index.\n var code_table = {}; // Key'd on our 20-bit \"tuple\".\n\n emit_code(clear_code); // Spec says first code should be a clear code.\n\n // First index already loaded, process the rest of the stream.\n for (var i = 1, il = index_stream.length; i < il; ++i) {\n var k = index_stream[i] & code_mask;\n var cur_key = (ib_code << 8) | k; // (prev, k) unique tuple.\n var cur_code = code_table[cur_key]; // buffer + k.\n\n // Check if we have to create a new code table entry.\n if (cur_code === undefined) {\n // We don't have buffer + k.\n // Emit index buffer (without k).\n // This is an inline version of emit_code, because this is the core\n // writing routine of the compressor (and V8 cannot inline emit_code\n // because it is a closure here in a different context). Additionally\n // we can call emit_byte_to_buffer less often, because we can have\n // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n // be 12-bits, so can safely have 18-bits there without overflow.\n // emit_code(ib_code);\n cur |= ib_code << cur_shift;\n cur_shift += cur_code_size;\n while (cur_shift >= 8) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n\n if (next_code === 4096) {\n // Table full, need a clear.\n emit_code(clear_code);\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_table = {};\n } else {\n // Table not full, insert a new entry.\n // Increase our variable bit code sizes if necessary. This is a bit\n // tricky as it is based on \"timing\" between the encoding and\n // decoder. From the encoders perspective this should happen after\n // we've already emitted the index buffer and are about to create the\n // first table entry that would overflow our current code bit size.\n if (next_code >= 1 << cur_code_size) ++cur_code_size;\n code_table[cur_key] = next_code++; // Insert into code table.\n }\n\n ib_code = k; // Index buffer to single input k.\n } else {\n ib_code = cur_code; // Index buffer to sequence in code table.\n }\n }\n\n emit_code(ib_code); // There will still be something in the index buffer.\n emit_code(eoi_code); // End Of Information.\n\n // Flush / finalize the sub-blocks stream to the buffer.\n emit_bytes_to_buffer(1);\n\n // Finish the sub-blocks, writing out any unfinished lengths and\n // terminating with a sub-block of length 0. If we have already started\n // but not yet used a sub-block it can just become the terminator.\n if (cur_subblock + 1 === p) {\n // Started but unused.\n buf[cur_subblock] = 0;\n } else {\n // Started and used, write length and additional terminator block.\n buf[cur_subblock] = p - cur_subblock - 1;\n buf[p++] = 0;\n }\n return p;\n}\n\nfunction GifReader(buf) {\n var p = 0;\n\n // - Header (GIF87a or GIF89a).\n if (\n buf[p++] !== 0x47 ||\n buf[p++] !== 0x49 ||\n buf[p++] !== 0x46 ||\n buf[p++] !== 0x38 ||\n ((buf[p++] + 1) & 0xfd) !== 0x38 ||\n buf[p++] !== 0x61\n ) {\n throw new Error(\"Invalid GIF 87a/89a header.\");\n }\n\n // - Logical Screen Descriptor.\n var width = buf[p++] | (buf[p++] << 8);\n var height = buf[p++] | (buf[p++] << 8);\n var pf0 = buf[p++]; // .\n var global_palette_flag = pf0 >> 7;\n var num_global_colors_pow2 = pf0 & 0x7;\n var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n var background = buf[p++];\n buf[p++]; // Pixel aspect ratio (unused?).\n\n var global_palette_offset = null;\n var global_palette_size = null;\n\n if (global_palette_flag) {\n global_palette_offset = p;\n global_palette_size = num_global_colors;\n p += num_global_colors * 3; // Seek past palette.\n }\n\n var no_eof = true;\n\n var frames = [];\n\n var delay = 0;\n var transparent_index = null;\n var disposal = 0; // 0 - No disposal specified.\n var loop_count = null;\n\n this.width = width;\n this.height = height;\n\n while (no_eof && p < buf.length) {\n switch (buf[p++]) {\n case 0x21: // Graphics Control Extension Block\n switch (buf[p++]) {\n case 0xff: // Application specific block\n // Try if it's a Netscape block (with animation loop counter).\n if (\n buf[p] !== 0x0b || // 21 FF already read, check block size.\n // NETSCAPE2.0\n (buf[p + 1] == 0x4e &&\n buf[p + 2] == 0x45 &&\n buf[p + 3] == 0x54 &&\n buf[p + 4] == 0x53 &&\n buf[p + 5] == 0x43 &&\n buf[p + 6] == 0x41 &&\n buf[p + 7] == 0x50 &&\n buf[p + 8] == 0x45 &&\n buf[p + 9] == 0x32 &&\n buf[p + 10] == 0x2e &&\n buf[p + 11] == 0x30 &&\n // Sub-block\n buf[p + 12] == 0x03 &&\n buf[p + 13] == 0x01 &&\n buf[p + 16] == 0)\n ) {\n p += 14;\n loop_count = buf[p++] | (buf[p++] << 8);\n p++; // Skip terminator.\n } else {\n // We don't know what it is, just try to get past it.\n p += 12;\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n }\n break;\n\n case 0xf9: // Graphics Control Extension\n if (buf[p++] !== 0x4 || buf[p + 4] !== 0)\n throw new Error(\"Invalid graphics extension block.\");\n var pf1 = buf[p++];\n delay = buf[p++] | (buf[p++] << 8);\n transparent_index = buf[p++];\n if ((pf1 & 1) === 0) transparent_index = null;\n disposal = (pf1 >> 2) & 0x7;\n p++; // Skip terminator.\n break;\n\n case 0xfe: // Comment Extension.\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n // console.log(buf.slice(p, p+block_size).toString('ascii'));\n p += block_size;\n }\n break;\n\n default:\n throw new Error(\n \"Unknown graphic control label: 0x\" + buf[p - 1].toString(16)\n );\n }\n break;\n\n case 0x2c: // Image Descriptor.\n var x = buf[p++] | (buf[p++] << 8);\n var y = buf[p++] | (buf[p++] << 8);\n var w = buf[p++] | (buf[p++] << 8);\n var h = buf[p++] | (buf[p++] << 8);\n var pf2 = buf[p++];\n var local_palette_flag = pf2 >> 7;\n var interlace_flag = (pf2 >> 6) & 1;\n var num_local_colors_pow2 = pf2 & 0x7;\n var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n var palette_offset = global_palette_offset;\n var palette_size = global_palette_size;\n var has_local_palette = false;\n if (local_palette_flag) {\n var has_local_palette = true;\n palette_offset = p; // Override with local palette.\n palette_size = num_local_colors;\n p += num_local_colors * 3; // Seek past palette.\n }\n\n var data_offset = p;\n\n p++; // codesize\n while (true) {\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n\n frames.push({\n x: x,\n y: y,\n width: w,\n height: h,\n has_local_palette: has_local_palette,\n palette_offset: palette_offset,\n palette_size: palette_size,\n data_offset: data_offset,\n data_length: p - data_offset,\n transparent_index: transparent_index,\n interlaced: !!interlace_flag,\n delay: delay,\n disposal: disposal\n });\n break;\n\n case 0x3b: // Trailer Marker (end of file).\n no_eof = false;\n break;\n\n default:\n throw new Error(\"Unknown gif block: 0x\" + buf[p - 1].toString(16));\n break;\n }\n }\n\n this.numFrames = function() {\n return frames.length;\n };\n\n this.loopCount = function() {\n return loop_count;\n };\n\n this.frameInfo = function(frame_num) {\n if (frame_num < 0 || frame_num >= frames.length)\n throw new Error(\"Frame index out of range.\");\n return frames[frame_num];\n };\n\n this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = b;\n pixels[op++] = g;\n pixels[op++] = r;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n\n // I will go to copy and paste hell one day...\n this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = r;\n pixels[op++] = g;\n pixels[op++] = b;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n var min_code_size = code_stream[p++];\n\n var clear_code = 1 << min_code_size;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n // NOTE: This shares the same name as the encoder, but has a different\n // meaning here. Here this masks each code coming from the code stream.\n var code_mask = (1 << cur_code_size) - 1;\n var cur_shift = 0;\n var cur = 0;\n\n var op = 0; // Output pointer.\n\n var subblock_size = code_stream[p++];\n\n // TODO(deanm): Would using a TypedArray be any faster? At least it would\n // solve the fast mode / backing store uncertainty.\n // var code_table = Array(4096);\n var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits.\n\n var prev_code = null; // Track code-1.\n\n while (true) {\n // Read up to two bytes, making sure we always 12-bits for max sized code.\n while (cur_shift < 16) {\n if (subblock_size === 0) break; // No more data to be read.\n\n cur |= code_stream[p++] << cur_shift;\n cur_shift += 8;\n\n if (subblock_size === 1) {\n // Never let it get to 0 to hold logic above.\n subblock_size = code_stream[p++]; // Next subblock.\n } else {\n --subblock_size;\n }\n }\n\n // TODO(deanm): We should never really get here, we should have received\n // and EOI.\n if (cur_shift < cur_code_size) break;\n\n var code = cur & code_mask;\n cur >>= cur_code_size;\n cur_shift -= cur_code_size;\n\n // TODO(deanm): Maybe should check that the first code was a clear code,\n // at least this is what you're supposed to do. But actually our encoder\n // now doesn't emit a clear code first anyway.\n if (code === clear_code) {\n // We don't actually have to clear the table. This could be a good idea\n // for greater error checking, but we don't really do any anyway. We\n // will just track it with next_code and overwrite old entries.\n\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_mask = (1 << cur_code_size) - 1;\n\n // Don't update prev_code ?\n prev_code = null;\n continue;\n } else if (code === eoi_code) {\n break;\n }\n\n // We have a similar situation as the decoder, where we want to store\n // variable length entries (code table entries), but we want to do in a\n // faster manner than an array of arrays. The code below stores sort of a\n // linked list within the code table, and then \"chases\" through it to\n // construct the dictionary entries. When a new entry is created, just the\n // last byte is stored, and the rest (prefix) of the entry is only\n // referenced by its table entry. Then the code chases through the\n // prefixes until it reaches a single byte code. We have to chase twice,\n // first to compute the length, and then to actually copy the data to the\n // output (backwards, since we know the length). The alternative would be\n // storing something in an intermediate stack, but that doesn't make any\n // more sense. I implemented an approach where it also stored the length\n // in the code table, although it's a bit tricky because you run out of\n // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n // entries are generally not the long). Even when I created benchmarks for\n // very long table entries the complexity did not seem worth it.\n // The code table stores the prefix entry in 12 bits and then the suffix\n // byte in 8 bits, so each entry is 20 bits.\n\n var chase_code = code < next_code ? code : prev_code;\n\n // Chase what we will output, either {CODE} or {CODE-1}.\n var chase_length = 0;\n var chase = chase_code;\n while (chase > clear_code) {\n chase = code_table[chase] >> 8;\n ++chase_length;\n }\n\n var k = chase;\n\n var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n if (op_end > output_length) {\n console.log(\"Warning, gif stream longer than expected.\");\n return;\n }\n\n // Already have the first byte from the chase, might as well write it fast.\n output[op++] = k;\n\n op += chase_length;\n var b = op; // Track pointer, writing backwards.\n\n if (chase_code !== code)\n // The case of emitting {CODE-1} + k.\n output[op++] = k;\n\n chase = chase_code;\n while (chase_length--) {\n chase = code_table[chase];\n output[--b] = chase & 0xff; // Write backwards.\n chase >>= 8; // Pull down to the prefix code.\n }\n\n if (prev_code !== null && next_code < 4096) {\n code_table[next_code++] = (prev_code << 8) | k;\n // TODO(deanm): Figure out this clearing vs code growth logic better. I\n // have an feeling that it should just happen somewhere else, for now it\n // is awkward between when we grow past the max and then hit a clear code.\n // For now just check if we hit the max 12-bits (then a clear code should\n // follow, also of course encoded in 12-bits).\n if (next_code >= code_mask + 1 && cur_code_size < 12) {\n ++cur_code_size;\n code_mask = (code_mask << 1) | 1;\n }\n }\n\n prev_code = code;\n }\n\n if (op !== output_length) {\n console.log(\"Warning, gif stream shorter than expected.\");\n }\n\n return output;\n}\n\nexport { GifReader, GifWriter };\n","/**\n * @license\n Copyright (c) 2008, Adobe Systems Incorporated\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without \n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the \n documentation and/or other materials provided with the distribution.\n \n * Neither the name of Adobe Systems Incorporated nor the names of its \n contributors may be used to endorse or promote products derived from \n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\nJPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n\nBasic GUI blocking jpeg encoder\n*/\n\nfunction JPEGEncoder(quality) {\n var ffloor = Math.floor;\n var YTable = new Array(64);\n var UVTable = new Array(64);\n var fdtbl_Y = new Array(64);\n var fdtbl_UV = new Array(64);\n var YDC_HT;\n var UVDC_HT;\n var YAC_HT;\n var UVAC_HT;\n\n var bitcode = new Array(65535);\n var category = new Array(65535);\n var outputfDCTQuant = new Array(64);\n var DU = new Array(64);\n var byteout = [];\n var bytenew = 0;\n var bytepos = 7;\n\n var YDU = new Array(64);\n var UDU = new Array(64);\n var VDU = new Array(64);\n var clt = new Array(256);\n var RGB_YUV_TABLE = new Array(2048);\n var currentQuality;\n\n var ZigZag = [\n 0,\n 1,\n 5,\n 6,\n 14,\n 15,\n 27,\n 28,\n 2,\n 4,\n 7,\n 13,\n 16,\n 26,\n 29,\n 42,\n 3,\n 8,\n 12,\n 17,\n 25,\n 30,\n 41,\n 43,\n 9,\n 11,\n 18,\n 24,\n 31,\n 40,\n 44,\n 53,\n 10,\n 19,\n 23,\n 32,\n 39,\n 45,\n 52,\n 54,\n 20,\n 22,\n 33,\n 38,\n 46,\n 51,\n 55,\n 60,\n 21,\n 34,\n 37,\n 47,\n 50,\n 56,\n 59,\n 61,\n 35,\n 36,\n 48,\n 49,\n 57,\n 58,\n 62,\n 63\n ];\n\n var std_dc_luminance_nrcodes = [\n 0,\n 0,\n 1,\n 5,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_luminance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 3,\n 3,\n 2,\n 4,\n 3,\n 5,\n 5,\n 4,\n 4,\n 0,\n 0,\n 1,\n 0x7d\n ];\n var std_ac_luminance_values = [\n 0x01,\n 0x02,\n 0x03,\n 0x00,\n 0x04,\n 0x11,\n 0x05,\n 0x12,\n 0x21,\n 0x31,\n 0x41,\n 0x06,\n 0x13,\n 0x51,\n 0x61,\n 0x07,\n 0x22,\n 0x71,\n 0x14,\n 0x32,\n 0x81,\n 0x91,\n 0xa1,\n 0x08,\n 0x23,\n 0x42,\n 0xb1,\n 0xc1,\n 0x15,\n 0x52,\n 0xd1,\n 0xf0,\n 0x24,\n 0x33,\n 0x62,\n 0x72,\n 0x82,\n 0x09,\n 0x0a,\n 0x16,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x25,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x34,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe1,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf1,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n var std_dc_chrominance_nrcodes = [\n 0,\n 0,\n 3,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_chrominance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 2,\n 4,\n 4,\n 3,\n 4,\n 7,\n 5,\n 4,\n 4,\n 0,\n 1,\n 2,\n 0x77\n ];\n var std_ac_chrominance_values = [\n 0x00,\n 0x01,\n 0x02,\n 0x03,\n 0x11,\n 0x04,\n 0x05,\n 0x21,\n 0x31,\n 0x06,\n 0x12,\n 0x41,\n 0x51,\n 0x07,\n 0x61,\n 0x71,\n 0x13,\n 0x22,\n 0x32,\n 0x81,\n 0x08,\n 0x14,\n 0x42,\n 0x91,\n 0xa1,\n 0xb1,\n 0xc1,\n 0x09,\n 0x23,\n 0x33,\n 0x52,\n 0xf0,\n 0x15,\n 0x62,\n 0x72,\n 0xd1,\n 0x0a,\n 0x16,\n 0x24,\n 0x34,\n 0xe1,\n 0x25,\n 0xf1,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x82,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n function initQuantTables(sf) {\n var YQT = [\n 16,\n 11,\n 10,\n 16,\n 24,\n 40,\n 51,\n 61,\n 12,\n 12,\n 14,\n 19,\n 26,\n 58,\n 60,\n 55,\n 14,\n 13,\n 16,\n 24,\n 40,\n 57,\n 69,\n 56,\n 14,\n 17,\n 22,\n 29,\n 51,\n 87,\n 80,\n 62,\n 18,\n 22,\n 37,\n 56,\n 68,\n 109,\n 103,\n 77,\n 24,\n 35,\n 55,\n 64,\n 81,\n 104,\n 113,\n 92,\n 49,\n 64,\n 78,\n 87,\n 103,\n 121,\n 120,\n 101,\n 72,\n 92,\n 95,\n 98,\n 112,\n 100,\n 103,\n 99\n ];\n\n for (var i = 0; i < 64; i++) {\n var t = ffloor((YQT[i] * sf + 50) / 100);\n t = Math.min(Math.max(t, 1), 255);\n YTable[ZigZag[i]] = t;\n }\n var UVQT = [\n 17,\n 18,\n 24,\n 47,\n 99,\n 99,\n 99,\n 99,\n 18,\n 21,\n 26,\n 66,\n 99,\n 99,\n 99,\n 99,\n 24,\n 26,\n 56,\n 99,\n 99,\n 99,\n 99,\n 99,\n 47,\n 66,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99\n ];\n for (var j = 0; j < 64; j++) {\n var u = ffloor((UVQT[j] * sf + 50) / 100);\n u = Math.min(Math.max(u, 1), 255);\n UVTable[ZigZag[j]] = u;\n }\n var aasf = [\n 1.0,\n 1.387039845,\n 1.306562965,\n 1.175875602,\n 1.0,\n 0.785694958,\n 0.5411961,\n 0.275899379\n ];\n var k = 0;\n for (var row = 0; row < 8; row++) {\n for (var col = 0; col < 8; col++) {\n fdtbl_Y[k] = 1.0 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n fdtbl_UV[k] = 1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n k++;\n }\n }\n }\n\n function computeHuffmanTbl(nrcodes, std_table) {\n var codevalue = 0;\n var pos_in_table = 0;\n var HT = new Array();\n for (var k = 1; k <= 16; k++) {\n for (var j = 1; j <= nrcodes[k]; j++) {\n HT[std_table[pos_in_table]] = [];\n HT[std_table[pos_in_table]][0] = codevalue;\n HT[std_table[pos_in_table]][1] = k;\n pos_in_table++;\n codevalue++;\n }\n codevalue *= 2;\n }\n return HT;\n }\n\n function initHuffmanTbl() {\n YDC_HT = computeHuffmanTbl(\n std_dc_luminance_nrcodes,\n std_dc_luminance_values\n );\n UVDC_HT = computeHuffmanTbl(\n std_dc_chrominance_nrcodes,\n std_dc_chrominance_values\n );\n YAC_HT = computeHuffmanTbl(\n std_ac_luminance_nrcodes,\n std_ac_luminance_values\n );\n UVAC_HT = computeHuffmanTbl(\n std_ac_chrominance_nrcodes,\n std_ac_chrominance_values\n );\n }\n\n function initCategoryNumber() {\n var nrlower = 1;\n var nrupper = 2;\n for (var cat = 1; cat <= 15; cat++) {\n //Positive numbers\n for (var nr = nrlower; nr < nrupper; nr++) {\n category[32767 + nr] = cat;\n bitcode[32767 + nr] = [];\n bitcode[32767 + nr][1] = cat;\n bitcode[32767 + nr][0] = nr;\n }\n //Negative numbers\n for (var nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) {\n category[32767 + nrneg] = cat;\n bitcode[32767 + nrneg] = [];\n bitcode[32767 + nrneg][1] = cat;\n bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg;\n }\n nrlower <<= 1;\n nrupper <<= 1;\n }\n }\n\n function initRGBYUVTable() {\n for (var i = 0; i < 256; i++) {\n RGB_YUV_TABLE[i] = 19595 * i;\n RGB_YUV_TABLE[(i + 256) >> 0] = 38470 * i;\n RGB_YUV_TABLE[(i + 512) >> 0] = 7471 * i + 0x8000;\n RGB_YUV_TABLE[(i + 768) >> 0] = -11059 * i;\n RGB_YUV_TABLE[(i + 1024) >> 0] = -21709 * i;\n RGB_YUV_TABLE[(i + 1280) >> 0] = 32768 * i + 0x807fff;\n RGB_YUV_TABLE[(i + 1536) >> 0] = -27439 * i;\n RGB_YUV_TABLE[(i + 1792) >> 0] = -5329 * i;\n }\n }\n\n // IO functions\n function writeBits(bs) {\n var value = bs[0];\n var posval = bs[1] - 1;\n while (posval >= 0) {\n if (value & (1 << posval)) {\n bytenew |= 1 << bytepos;\n }\n posval--;\n bytepos--;\n if (bytepos < 0) {\n if (bytenew == 0xff) {\n writeByte(0xff);\n writeByte(0);\n } else {\n writeByte(bytenew);\n }\n bytepos = 7;\n bytenew = 0;\n }\n }\n }\n\n function writeByte(value) {\n //byteout.push(clt[value]); // write char directly instead of converting later\n byteout.push(value);\n }\n\n function writeWord(value) {\n writeByte((value >> 8) & 0xff);\n writeByte(value & 0xff);\n }\n\n // DCT & quantization core\n function fDCTQuant(data, fdtbl) {\n var d0, d1, d2, d3, d4, d5, d6, d7;\n /* Pass 1: process rows. */\n var dataOff = 0;\n var i;\n var I8 = 8;\n var I64 = 64;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 1];\n d2 = data[dataOff + 2];\n d3 = data[dataOff + 3];\n d4 = data[dataOff + 4];\n d5 = data[dataOff + 5];\n d6 = data[dataOff + 6];\n d7 = data[dataOff + 7];\n\n var tmp0 = d0 + d7;\n var tmp7 = d0 - d7;\n var tmp1 = d1 + d6;\n var tmp6 = d1 - d6;\n var tmp2 = d2 + d5;\n var tmp5 = d2 - d5;\n var tmp3 = d3 + d4;\n var tmp4 = d3 - d4;\n\n /* Even part */\n var tmp10 = tmp0 + tmp3; /* phase 2 */\n var tmp13 = tmp0 - tmp3;\n var tmp11 = tmp1 + tmp2;\n var tmp12 = tmp1 - tmp2;\n\n data[dataOff] = tmp10 + tmp11; /* phase 3 */\n data[dataOff + 4] = tmp10 - tmp11;\n\n var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n data[dataOff + 2] = tmp13 + z1; /* phase 5 */\n data[dataOff + 6] = tmp13 - z1;\n\n /* Odd part */\n tmp10 = tmp4 + tmp5; /* phase 2 */\n tmp11 = tmp5 + tmp6;\n tmp12 = tmp6 + tmp7;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n var z2 = 0.5411961 * tmp10 + z5; /* c2-c6 */\n var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n var z3 = tmp11 * 0.707106781; /* c4 */\n\n var z11 = tmp7 + z3; /* phase 5 */\n var z13 = tmp7 - z3;\n\n data[dataOff + 5] = z13 + z2; /* phase 6 */\n data[dataOff + 3] = z13 - z2;\n data[dataOff + 1] = z11 + z4;\n data[dataOff + 7] = z11 - z4;\n\n dataOff += 8; /* advance pointer to next row */\n }\n\n /* Pass 2: process columns. */\n dataOff = 0;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 8];\n d2 = data[dataOff + 16];\n d3 = data[dataOff + 24];\n d4 = data[dataOff + 32];\n d5 = data[dataOff + 40];\n d6 = data[dataOff + 48];\n d7 = data[dataOff + 56];\n\n var tmp0p2 = d0 + d7;\n var tmp7p2 = d0 - d7;\n var tmp1p2 = d1 + d6;\n var tmp6p2 = d1 - d6;\n var tmp2p2 = d2 + d5;\n var tmp5p2 = d2 - d5;\n var tmp3p2 = d3 + d4;\n var tmp4p2 = d3 - d4;\n\n /* Even part */\n var tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */\n var tmp13p2 = tmp0p2 - tmp3p2;\n var tmp11p2 = tmp1p2 + tmp2p2;\n var tmp12p2 = tmp1p2 - tmp2p2;\n\n data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n data[dataOff + 32] = tmp10p2 - tmp11p2;\n\n var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n data[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */\n data[dataOff + 48] = tmp13p2 - z1p2;\n\n /* Odd part */\n tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n tmp11p2 = tmp5p2 + tmp6p2;\n tmp12p2 = tmp6p2 + tmp7p2;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n var z2p2 = 0.5411961 * tmp10p2 + z5p2; /* c2-c6 */\n var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n\n var z11p2 = tmp7p2 + z3p2; /* phase 5 */\n var z13p2 = tmp7p2 - z3p2;\n\n data[dataOff + 40] = z13p2 + z2p2; /* phase 6 */\n data[dataOff + 24] = z13p2 - z2p2;\n data[dataOff + 8] = z11p2 + z4p2;\n data[dataOff + 56] = z11p2 - z4p2;\n\n dataOff++; /* advance pointer to next column */\n }\n\n // Quantize/descale the coefficients\n var fDCTQuant;\n for (i = 0; i < I64; ++i) {\n // Apply the quantization and scaling factor & Round to nearest integer\n fDCTQuant = data[i] * fdtbl[i];\n outputfDCTQuant[i] =\n fDCTQuant > 0.0 ? (fDCTQuant + 0.5) | 0 : (fDCTQuant - 0.5) | 0;\n //outputfDCTQuant[i] = fround(fDCTQuant);\n }\n return outputfDCTQuant;\n }\n\n function writeAPP0() {\n writeWord(0xffe0); // marker\n writeWord(16); // length\n writeByte(0x4a); // J\n writeByte(0x46); // F\n writeByte(0x49); // I\n writeByte(0x46); // F\n writeByte(0); // = \"JFIF\",'\\0'\n writeByte(1); // versionhi\n writeByte(1); // versionlo\n writeByte(0); // xyunits\n writeWord(1); // xdensity\n writeWord(1); // ydensity\n writeByte(0); // thumbnwidth\n writeByte(0); // thumbnheight\n }\n\n function writeSOF0(width, height) {\n writeWord(0xffc0); // marker\n writeWord(17); // length, truecolor YUV JPG\n writeByte(8); // precision\n writeWord(height);\n writeWord(width);\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0x11); // HVY\n writeByte(0); // QTY\n writeByte(2); // IdU\n writeByte(0x11); // HVU\n writeByte(1); // QTU\n writeByte(3); // IdV\n writeByte(0x11); // HVV\n writeByte(1); // QTV\n }\n\n function writeDQT() {\n writeWord(0xffdb); // marker\n writeWord(132); // length\n writeByte(0);\n for (var i = 0; i < 64; i++) {\n writeByte(YTable[i]);\n }\n writeByte(1);\n for (var j = 0; j < 64; j++) {\n writeByte(UVTable[j]);\n }\n }\n\n function writeDHT() {\n writeWord(0xffc4); // marker\n writeWord(0x01a2); // length\n\n writeByte(0); // HTYDCinfo\n for (var i = 0; i < 16; i++) {\n writeByte(std_dc_luminance_nrcodes[i + 1]);\n }\n for (var j = 0; j <= 11; j++) {\n writeByte(std_dc_luminance_values[j]);\n }\n\n writeByte(0x10); // HTYACinfo\n for (var k = 0; k < 16; k++) {\n writeByte(std_ac_luminance_nrcodes[k + 1]);\n }\n for (var l = 0; l <= 161; l++) {\n writeByte(std_ac_luminance_values[l]);\n }\n\n writeByte(1); // HTUDCinfo\n for (var m = 0; m < 16; m++) {\n writeByte(std_dc_chrominance_nrcodes[m + 1]);\n }\n for (var n = 0; n <= 11; n++) {\n writeByte(std_dc_chrominance_values[n]);\n }\n\n writeByte(0x11); // HTUACinfo\n for (var o = 0; o < 16; o++) {\n writeByte(std_ac_chrominance_nrcodes[o + 1]);\n }\n for (var p = 0; p <= 161; p++) {\n writeByte(std_ac_chrominance_values[p]);\n }\n }\n\n function writeSOS() {\n writeWord(0xffda); // marker\n writeWord(12); // length\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0); // HTY\n writeByte(2); // IdU\n writeByte(0x11); // HTU\n writeByte(3); // IdV\n writeByte(0x11); // HTV\n writeByte(0); // Ss\n writeByte(0x3f); // Se\n writeByte(0); // Bf\n }\n\n function processDU(CDU, fdtbl, DC, HTDC, HTAC) {\n var EOB = HTAC[0x00];\n var M16zeroes = HTAC[0xf0];\n var pos;\n var I16 = 16;\n var I63 = 63;\n var I64 = 64;\n var DU_DCT = fDCTQuant(CDU, fdtbl);\n //ZigZag reorder\n for (var j = 0; j < I64; ++j) {\n DU[ZigZag[j]] = DU_DCT[j];\n }\n var Diff = DU[0] - DC;\n DC = DU[0];\n //Encode DC\n if (Diff == 0) {\n writeBits(HTDC[0]); // Diff might be 0\n } else {\n pos = 32767 + Diff;\n writeBits(HTDC[category[pos]]);\n writeBits(bitcode[pos]);\n }\n //Encode ACs\n var end0pos = 63; // was const... which is crazy\n while (end0pos > 0 && DU[end0pos] == 0) {\n end0pos--;\n }\n //end0pos = first element in reverse order !=0\n if (end0pos == 0) {\n writeBits(EOB);\n return DC;\n }\n var i = 1;\n var lng;\n while (i <= end0pos) {\n var startpos = i;\n while (DU[i] == 0 && i <= end0pos) {\n ++i;\n }\n var nrzeroes = i - startpos;\n if (nrzeroes >= I16) {\n lng = nrzeroes >> 4;\n for (var nrmarker = 1; nrmarker <= lng; ++nrmarker)\n writeBits(M16zeroes);\n nrzeroes = nrzeroes & 0xf;\n }\n pos = 32767 + DU[i];\n writeBits(HTAC[(nrzeroes << 4) + category[pos]]);\n writeBits(bitcode[pos]);\n i++;\n }\n if (end0pos != I63) {\n writeBits(EOB);\n }\n return DC;\n }\n\n function initCharLookupTable() {\n var sfcc = String.fromCharCode;\n for (var i = 0; i < 256; i++) {\n ///// ACHTUNG // 255\n clt[i] = sfcc(i);\n }\n }\n\n this.encode = function(\n image,\n quality // image data object\n ) {\n if (quality) setQuality(quality);\n\n // Initialize bit writer\n byteout = new Array();\n bytenew = 0;\n bytepos = 7;\n\n // Add JPEG headers\n writeWord(0xffd8); // SOI\n writeAPP0();\n writeDQT();\n writeSOF0(image.width, image.height);\n writeDHT();\n writeSOS();\n\n // Encode 8x8 macroblocks\n var DCY = 0;\n var DCU = 0;\n var DCV = 0;\n\n bytenew = 0;\n bytepos = 7;\n\n this.encode.displayName = \"_encode_\";\n\n var imageData = image.data;\n var width = image.width;\n var height = image.height;\n\n var quadWidth = width * 4;\n\n var x,\n y = 0;\n var r, g, b;\n var start, p, col, row, pos;\n while (y < height) {\n x = 0;\n while (x < quadWidth) {\n start = quadWidth * y + x;\n col = -1;\n row = 0;\n\n for (pos = 0; pos < 64; pos++) {\n row = pos >> 3; // /8\n col = (pos & 7) * 4; // %8\n p = start + row * quadWidth + col;\n\n if (y + row >= height) {\n // padding bottom\n p -= quadWidth * (y + 1 + row - height);\n }\n\n if (x + col >= quadWidth) {\n // padding right\n p -= x + col - quadWidth + 4;\n }\n\n r = imageData[p++];\n g = imageData[p++];\n b = imageData[p++];\n\n /* // calculate YUV values dynamically\n\t\t\t\t\tYDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n\t\t\t\t\tUDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n\t\t\t\t\tVDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n\t\t\t\t\t*/\n\n // use lookup table (slightly faster)\n YDU[pos] =\n ((RGB_YUV_TABLE[r] +\n RGB_YUV_TABLE[(g + 256) >> 0] +\n RGB_YUV_TABLE[(b + 512) >> 0]) >>\n 16) -\n 128;\n UDU[pos] =\n ((RGB_YUV_TABLE[(r + 768) >> 0] +\n RGB_YUV_TABLE[(g + 1024) >> 0] +\n RGB_YUV_TABLE[(b + 1280) >> 0]) >>\n 16) -\n 128;\n VDU[pos] =\n ((RGB_YUV_TABLE[(r + 1280) >> 0] +\n RGB_YUV_TABLE[(g + 1536) >> 0] +\n RGB_YUV_TABLE[(b + 1792) >> 0]) >>\n 16) -\n 128;\n }\n\n DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n x += 32;\n }\n y += 8;\n }\n\n ////////////////////////////////////////////////////////////////\n\n // Do the bit alignment of the EOI marker\n if (bytepos >= 0) {\n var fillbits = [];\n fillbits[1] = bytepos + 1;\n fillbits[0] = (1 << (bytepos + 1)) - 1;\n writeBits(fillbits);\n }\n\n writeWord(0xffd9); //EOI\n\n return new Uint8Array(byteout);\n };\n\n function setQuality(quality) {\n quality = Math.min(Math.max(quality, 1), 100);\n\n if (currentQuality == quality) return; // don't recalc if unchanged\n\n var sf =\n quality < 50 ? Math.floor(5000 / quality) : Math.floor(200 - quality * 2);\n\n initQuantTables(sf);\n currentQuality = quality;\n //console.log('Quality set to: '+quality +'%');\n }\n\n function init() {\n quality = quality || 50;\n // Create tables\n initCharLookupTable();\n initHuffmanTbl();\n initCategoryNumber();\n initRGBYUVTable();\n\n setQuality(quality);\n }\n init();\n}\n\nexport { JPEGEncoder };\n","/**\n * @author shaozilee\n *\n * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp\n *\n */\n\nimport { console } from \"./console.js\";\n\nfunction BmpDecoder(buffer, is_with_alpha) {\n this.pos = 0;\n this.buffer = buffer;\n this.datav = new DataView(buffer.buffer);\n this.is_with_alpha = !!is_with_alpha;\n this.bottom_up = true;\n this.flag =\n String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]);\n this.pos += 2;\n if ([\"BM\", \"BA\", \"CI\", \"CP\", \"IC\", \"PT\"].indexOf(this.flag) === -1)\n throw new Error(\"Invalid BMP File\");\n this.parseHeader();\n this.parseBGR();\n}\n\nBmpDecoder.prototype.parseHeader = function() {\n this.fileSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.reserved = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.offset = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.headerSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.width = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.height = this.datav.getInt32(this.pos, true);\n this.pos += 4;\n this.planes = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.bitPP = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.compress = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.rawSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.hr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.vr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.colors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.importantColors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n\n if (this.bitPP === 16 && this.is_with_alpha) {\n this.bitPP = 15;\n }\n if (this.bitPP < 15) {\n var len = this.colors === 0 ? 1 << this.bitPP : this.colors;\n this.palette = new Array(len);\n for (var i = 0; i < len; i++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var quad = this.datav.getUint8(this.pos++, true);\n this.palette[i] = {\n red: red,\n green: green,\n blue: blue,\n quad: quad\n };\n }\n }\n if (this.height < 0) {\n this.height *= -1;\n this.bottom_up = false;\n }\n};\n\nBmpDecoder.prototype.parseBGR = function() {\n this.pos = this.offset;\n try {\n var bitn = \"bit\" + this.bitPP;\n var len = this.width * this.height * 4;\n this.data = new Uint8Array(len);\n\n this[bitn]();\n } catch (e) {\n console.log(\"bit decode error:\" + e);\n }\n};\n\nBmpDecoder.prototype.bit1 = function() {\n var xlen = Math.ceil(this.width / 8);\n var mode = xlen % 4;\n var y;\n for (y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 8 * 4;\n for (var i = 0; i < 8; i++) {\n if (x * 8 + i < this.width) {\n var rgb = this.palette[(b >> (7 - i)) & 0x1];\n this.data[location + i * 4] = rgb.blue;\n this.data[location + i * 4 + 1] = rgb.green;\n this.data[location + i * 4 + 2] = rgb.red;\n this.data[location + i * 4 + 3] = 0xff;\n } else {\n break;\n }\n }\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit4 = function() {\n var xlen = Math.ceil(this.width / 2);\n var mode = xlen % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 2 * 4;\n\n var before = b >> 4;\n var after = b & 0x0f;\n\n var rgb = this.palette[before];\n this.data[location] = rgb.blue;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.red;\n this.data[location + 3] = 0xff;\n\n if (x * 2 + 1 >= this.width) break;\n\n rgb = this.palette[after];\n this.data[location + 4] = rgb.blue;\n this.data[location + 4 + 1] = rgb.green;\n this.data[location + 4 + 2] = rgb.red;\n this.data[location + 4 + 3] = 0xff;\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit8 = function() {\n var mode = this.width % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n if (b < this.palette.length) {\n var rgb = this.palette[b];\n this.data[location] = rgb.red;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.blue;\n this.data[location + 3] = 0xff;\n } else {\n this.data[location] = 0xff;\n this.data[location + 1] = 0xff;\n this.data[location + 2] = 0xff;\n this.data[location + 3] = 0xff;\n }\n }\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit15 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_5) / _1_5) * 255) | 0;\n var red = ((((B >> 10) & _1_5) / _1_5) * 255) | 0;\n var alpha = B >> 15 ? 0xff : 0x00;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit16 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n var _111111 = parseInt(\"111111\", 2),\n _1_6 = _111111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var alpha = 0xff;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_6) / _1_6) * 255) | 0;\n var red = (((B >> 11) / _1_5) * 255) | 0;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit24 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = 0xff;\n }\n //skip extra bytes\n this.pos += this.width % 4;\n }\n};\n\n/**\n * add 32bit decode func\n * @author soubok\n */\nBmpDecoder.prototype.bit32 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var alpha = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n //this.pos += (this.width % 4);\n }\n};\n\nBmpDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { BmpDecoder };\n","function WebPDecoder(imageData) {\n /** @license\n * Copyright 2011 Google Inc.\n *\n * This code is licensed under the same terms as WebM:\n * Software License Agreement: http://www.webmproject.org/license/software/\n * Additional IP Rights Grant: http://www.webmproject.org/license/additional/\n * -----------------------------------------------------------------------------\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -----------------------------------------------------------------------------\n *\n * Copyright 2011-2017 Dominik Homberger\n * Libwebp Javascript / libwebpjs - the libwebp implementation in javascript (v0.6.0)\n *\n * Author: Dominik Homberger (dominik.homberger@gmail.com)\n */\n\n var self = this;\n var UpsampleRgbLinePair,\n UpsampleBgrLinePair,\n UpsampleRgbaLinePair,\n UpsampleBgraLinePair,\n UpsampleArgbLinePair,\n UpsampleArgbLinePair,\n UpsampleRgba4444LinePair,\n UpsampleRgb565LinePair;\n\n function x(F) {\n if (!F) throw Error(\"assert :P\");\n }\n function fa(F, L, J) {\n for (var H = 0; 4 > H; H++) if (F[L + H] != J.charCodeAt(H)) return !0;\n return !1;\n }\n function I(F, L, J, H, Z) {\n for (var O = 0; O < Z; O++) F[L + O] = J[H + O];\n }\n function M(F, L, J, H) {\n for (var Z = 0; Z < H; Z++) F[L + Z] = J;\n }\n function V(F) {\n return new Int32Array(F);\n }\n function wa(F, L) {\n for (var J = [], H = 0; H < F; H++) J.push(new L());\n return J;\n }\n function wb() {\n function F(J, H, Z) {\n for (var O = Z[H], L = 0; L < O; L++) {\n J.push(Z.length > H + 1 ? [] : 0);\n if (Z.length < H + 1) break;\n F(J[L], H + 1, Z);\n }\n }\n var L = [];\n F(L, 0, [3, 11]);\n return L;\n }\n function Ed(F, L) {\n function J(H, O, F) {\n for (var Z = F[O], ma = 0; ma < Z; ma++) {\n H.push(F.length > O + 1 ? [] : new L());\n if (F.length < O + 1) break;\n J(H[ma], O + 1, F);\n }\n }\n var H = [];\n J(H, 0, F);\n return H;\n }\n var _WebPDecoder = function() {\n var self = this;\n function F() {\n V(55);\n }\n function L(a, b) {\n for (var c = (1 << (b - 1)) >>> 0; a & c; ) c >>>= 1;\n return c ? (a & (c - 1)) + c : a;\n }\n function J(a, b, c, d, e) {\n x(!(d % c));\n do (d -= c), (a[b + d] = e);\n while (0 < d);\n }\n function H(a, b, c, d, e, f) {\n var g = b,\n h = 1 << c,\n k,\n l,\n m = V(16),\n n = V(16);\n x(0 != e);\n x(null != d);\n x(null != a);\n x(0 < c);\n for (l = 0; l < e; ++l) {\n if (15 < d[l]) return 0;\n ++m[d[l]];\n }\n if (m[0] == e) return 0;\n n[1] = 0;\n for (k = 1; 15 > k; ++k) {\n if (m[k] > 1 << k) return 0;\n n[k + 1] = n[k] + m[k];\n }\n for (l = 0; l < e; ++l) (k = d[l]), 0 < d[l] && (f[n[k]++] = l);\n if (1 == n[15])\n return (d = new O()), (d.g = 0), (d.value = f[0]), J(a, g, 1, h, d), h;\n var r = -1,\n q = h - 1,\n t = 0,\n v = 1,\n p = 1,\n u,\n w = 1 << c;\n l = 0;\n k = 1;\n for (e = 2; k <= c; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k])\n (d = new O()),\n (d.g = k),\n (d.value = f[l++]),\n J(a, g + t, e, w, d),\n (t = L(t, k));\n }\n k = c + 1;\n for (e = 2; 15 >= k; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k]) {\n d = new O();\n if ((t & q) != r) {\n g += w;\n r = k;\n for (u = 1 << (r - c); 15 > r; ) {\n u -= m[r];\n if (0 >= u) break;\n ++r;\n u <<= 1;\n }\n u = r - c;\n w = 1 << u;\n h += w;\n r = t & q;\n a[b + r].g = u + c;\n a[b + r].value = g - b - r;\n }\n d.g = k - c;\n d.value = f[l++];\n J(a, g + (t >> c), e, w, d);\n t = L(t, k);\n }\n }\n return v != 2 * n[15] - 1 ? 0 : h;\n }\n function Z(a, b, c, d, e) {\n x(2328 >= e);\n if (512 >= e) var f = V(512);\n else if (((f = V(e)), null == f)) return 0;\n return H(a, b, c, d, e, f);\n }\n function O() {\n this.value = this.g = 0;\n }\n function Fd() {\n this.value = this.g = 0;\n }\n function Ub() {\n this.G = wa(5, O);\n this.H = V(5);\n this.jc = this.Qb = this.qb = this.nd = 0;\n this.pd = wa(xb, Fd);\n }\n function ma(a, b, c, d) {\n x(null != a);\n x(null != b);\n x(2147483648 > d);\n a.Ca = 254;\n a.I = 0;\n a.b = -8;\n a.Ka = 0;\n a.oa = b;\n a.pa = c;\n a.Jd = b;\n a.Yc = c + d;\n a.Zc = 4 <= d ? c + d - 4 + 1 : c;\n Qa(a);\n }\n function na(a, b) {\n for (var c = 0; 0 < b--; ) c |= K(a, 128) << b;\n return c;\n }\n function ca(a, b) {\n var c = na(a, b);\n return G(a) ? -c : c;\n }\n function cb(a, b, c, d) {\n var e,\n f = 0;\n x(null != a);\n x(null != b);\n x(4294967288 > d);\n a.Sb = d;\n a.Ra = 0;\n a.u = 0;\n a.h = 0;\n 4 < d && (d = 4);\n for (e = 0; e < d; ++e) f += b[c + e] << (8 * e);\n a.Ra = f;\n a.bb = d;\n a.oa = b;\n a.pa = c;\n }\n function Vb(a) {\n for (; 8 <= a.u && a.bb < a.Sb; )\n (a.Ra >>>= 8),\n (a.Ra += (a.oa[a.pa + a.bb] << (ob - 8)) >>> 0),\n ++a.bb,\n (a.u -= 8);\n db(a) && ((a.h = 1), (a.u = 0));\n }\n function D(a, b) {\n x(0 <= b);\n if (!a.h && b <= Gd) {\n var c = pb(a) & Hd[b];\n a.u += b;\n Vb(a);\n return c;\n }\n a.h = 1;\n return (a.u = 0);\n }\n function Wb() {\n this.b = this.Ca = this.I = 0;\n this.oa = [];\n this.pa = 0;\n this.Jd = [];\n this.Yc = 0;\n this.Zc = [];\n this.Ka = 0;\n }\n function Ra() {\n this.Ra = 0;\n this.oa = [];\n this.h = this.u = this.bb = this.Sb = this.pa = 0;\n }\n function pb(a) {\n return (a.Ra >>> (a.u & (ob - 1))) >>> 0;\n }\n function db(a) {\n x(a.bb <= a.Sb);\n return a.h || (a.bb == a.Sb && a.u > ob);\n }\n function qb(a, b) {\n a.u = b;\n a.h = db(a);\n }\n function Sa(a) {\n a.u >= Xb && (x(a.u >= Xb), Vb(a));\n }\n function Qa(a) {\n x(null != a && null != a.oa);\n a.pa < a.Zc\n ? ((a.I = (a.oa[a.pa++] | (a.I << 8)) >>> 0), (a.b += 8))\n : (x(null != a && null != a.oa),\n a.pa < a.Yc\n ? ((a.b += 8), (a.I = a.oa[a.pa++] | (a.I << 8)))\n : a.Ka\n ? (a.b = 0)\n : ((a.I <<= 8), (a.b += 8), (a.Ka = 1)));\n }\n function G(a) {\n return na(a, 1);\n }\n function K(a, b) {\n var c = a.Ca;\n 0 > a.b && Qa(a);\n var d = a.b,\n e = (c * b) >>> 8,\n f = (a.I >>> d > e) + 0;\n f ? ((c -= e), (a.I -= ((e + 1) << d) >>> 0)) : (c = e + 1);\n d = c;\n for (e = 0; 256 <= d; ) (e += 8), (d >>= 8);\n d = 7 ^ (e + Id[d]);\n a.b -= d;\n a.Ca = (c << d) - 1;\n return f;\n }\n function ra(a, b, c) {\n a[b + 0] = (c >> 24) & 255;\n a[b + 1] = (c >> 16) & 255;\n a[b + 2] = (c >> 8) & 255;\n a[b + 3] = (c >> 0) & 255;\n }\n function Ta(a, b) {\n return (a[b + 0] << 0) | (a[b + 1] << 8);\n }\n function Yb(a, b) {\n return Ta(a, b) | (a[b + 2] << 16);\n }\n function Ha(a, b) {\n return Ta(a, b) | (Ta(a, b + 2) << 16);\n }\n function Zb(a, b) {\n var c = 1 << b;\n x(null != a);\n x(0 < b);\n a.X = V(c);\n if (null == a.X) return 0;\n a.Mb = 32 - b;\n a.Xa = b;\n return 1;\n }\n function $b(a, b) {\n x(null != a);\n x(null != b);\n x(a.Xa == b.Xa);\n I(b.X, 0, a.X, 0, 1 << b.Xa);\n }\n function ac() {\n this.X = [];\n this.Xa = this.Mb = 0;\n }\n function bc(a, b, c, d) {\n x(null != c);\n x(null != d);\n var e = c[0],\n f = d[0];\n 0 == e && (e = (a * f + b / 2) / b);\n 0 == f && (f = (b * e + a / 2) / a);\n if (0 >= e || 0 >= f) return 0;\n c[0] = e;\n d[0] = f;\n return 1;\n }\n function xa(a, b) {\n return (a + (1 << b) - 1) >>> b;\n }\n function yb(a, b) {\n return (\n (((((a & 4278255360) + (b & 4278255360)) >>> 0) & 4278255360) +\n ((((a & 16711935) + (b & 16711935)) >>> 0) & 16711935)) >>>\n 0\n );\n }\n function X(a, b) {\n self[b] = function(b, d, e, f, g, h, k) {\n var c;\n for (c = 0; c < g; ++c) {\n var m = self[a](h[k + c - 1], e, f + c);\n h[k + c] = yb(b[d + c], m);\n }\n };\n }\n function Jd() {\n this.ud = this.hd = this.jd = 0;\n }\n function aa(a, b) {\n return ((((a ^ b) & 4278124286) >>> 1) + (a & b)) >>> 0;\n }\n function sa(a) {\n if (0 <= a && 256 > a) return a;\n if (0 > a) return 0;\n if (255 < a) return 255;\n }\n function eb(a, b) {\n return sa(a + ((a - b + 0.5) >> 1));\n }\n function Ia(a, b, c) {\n return Math.abs(b - c) - Math.abs(a - c);\n }\n function cc(a, b, c, d, e, f, g) {\n d = f[g - 1];\n for (c = 0; c < e; ++c) f[g + c] = d = yb(a[b + c], d);\n }\n function Kd(a, b, c, d, e) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + f],\n h = (g >> 8) & 255,\n k = g & 16711935,\n k = k + ((h << 16) + h),\n k = k & 16711935;\n d[e + f] = ((g & 4278255360) + k) >>> 0;\n }\n }\n function dc(a, b) {\n b.jd = (a >> 0) & 255;\n b.hd = (a >> 8) & 255;\n b.ud = (a >> 16) & 255;\n }\n function Ld(a, b, c, d, e, f) {\n var g;\n for (g = 0; g < d; ++g) {\n var h = b[c + g],\n k = h >>> 8,\n l = h >>> 16,\n m = h,\n l = l + ((((a.jd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n l = l & 255,\n m = m + ((((a.hd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n m = m + ((((a.ud << 24) >> 24) * ((l << 24) >> 24)) >>> 5),\n m = m & 255;\n e[f + g] = (h & 4278255360) + (l << 16) + m;\n }\n }\n function ec(a, b, c, d, e) {\n self[b] = function(a, b, c, k, l, m, n, r, q) {\n for (k = n; k < r; ++k)\n for (n = 0; n < q; ++n) l[m++] = e(c[d(a[b++])]);\n };\n self[a] = function(a, b, h, k, l, m, n) {\n var f = 8 >> a.b,\n g = a.Ea,\n t = a.K[0],\n v = a.w;\n if (8 > f)\n for (a = (1 << a.b) - 1, v = (1 << f) - 1; b < h; ++b) {\n var p = 0,\n u;\n for (u = 0; u < g; ++u)\n u & a || (p = d(k[l++])), (m[n++] = e(t[p & v])), (p >>= f);\n }\n else self[\"VP8LMapColor\" + c](k, l, t, v, m, n, b, h, g);\n };\n }\n function Md(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n }\n }\n function Nd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 24) & 255;\n }\n }\n function Od(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 240) | ((f >> 12) & 15),\n f = ((f >> 0) & 240) | ((f >> 28) & 15);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Pd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 248) | ((f >> 13) & 7),\n f = ((f >> 5) & 224) | ((f >> 3) & 31);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Qd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 16) & 255;\n }\n }\n function fb(a, b, c, d, e, f) {\n if (0 == f)\n for (c = b + c; b < c; )\n (f = a[b++]),\n ra(\n d,\n ((f[0] >> 24) |\n ((f[1] >> 8) & 65280) |\n ((f[2] << 8) & 16711680) |\n (f[3] << 24)) >>>\n 0\n ),\n (e += 32);\n else I(d, e, a, b, c);\n }\n function gb(a, b) {\n self[b][0] = self[a + \"0\"];\n self[b][1] = self[a + \"1\"];\n self[b][2] = self[a + \"2\"];\n self[b][3] = self[a + \"3\"];\n self[b][4] = self[a + \"4\"];\n self[b][5] = self[a + \"5\"];\n self[b][6] = self[a + \"6\"];\n self[b][7] = self[a + \"7\"];\n self[b][8] = self[a + \"8\"];\n self[b][9] = self[a + \"9\"];\n self[b][10] = self[a + \"10\"];\n self[b][11] = self[a + \"11\"];\n self[b][12] = self[a + \"12\"];\n self[b][13] = self[a + \"13\"];\n self[b][14] = self[a + \"0\"];\n self[b][15] = self[a + \"0\"];\n }\n function hb(a) {\n return a == zb || a == Ab || a == Ja || a == Bb;\n }\n function Rd() {\n this.eb = [];\n this.size = this.A = this.fb = 0;\n }\n function Sd() {\n this.y = [];\n this.f = [];\n this.ea = [];\n this.F = [];\n this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;\n }\n function Cb() {\n this.Rd = this.height = this.width = this.S = 0;\n this.f = {};\n this.f.RGBA = new Rd();\n this.f.kb = new Sd();\n this.sd = null;\n }\n function Td() {\n this.width = [0];\n this.height = [0];\n this.Pd = [0];\n this.Qd = [0];\n this.format = [0];\n }\n function Ud() {\n this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;\n }\n function Vd(a) {\n alert(\"todo:WebPSamplerProcessPlane\");\n return a.T;\n }\n function Wd(a, b) {\n var c = a.T,\n d = b.ba.f.RGBA,\n e = d.eb,\n f = d.fb + a.ka * d.A,\n g = P[b.ba.S],\n h = a.y,\n k = a.O,\n l = a.f,\n m = a.N,\n n = a.ea,\n r = a.W,\n q = b.cc,\n t = b.dc,\n v = b.Mc,\n p = b.Nc,\n u = a.ka,\n w = a.ka + a.T,\n y = a.U,\n A = (y + 1) >> 1;\n 0 == u\n ? g(h, k, null, null, l, m, n, r, l, m, n, r, e, f, null, null, y)\n : (g(b.ec, b.fc, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y),\n ++c);\n for (; u + 2 < w; u += 2)\n (q = l),\n (t = m),\n (v = n),\n (p = r),\n (m += a.Rc),\n (r += a.Rc),\n (f += 2 * d.A),\n (k += 2 * a.fa),\n g(h, k - a.fa, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y);\n k += a.fa;\n a.j + w < a.o\n ? (I(b.ec, b.fc, h, k, y),\n I(b.cc, b.dc, l, m, A),\n I(b.Mc, b.Nc, n, r, A),\n c--)\n : w & 1 ||\n g(\n h,\n k,\n null,\n null,\n l,\n m,\n n,\n r,\n l,\n m,\n n,\n r,\n e,\n f + d.A,\n null,\n null,\n y\n );\n return c;\n }\n function Xd(a, b, c) {\n var d = a.F,\n e = [a.J];\n if (null != d) {\n var f = a.U,\n g = b.ba.S,\n h = g == ya || g == Ja;\n b = b.ba.f.RGBA;\n var k = [0],\n l = a.ka;\n k[0] = a.T;\n a.Kb &&\n (0 == l ? --k[0] : (--l, (e[0] -= a.width)),\n a.j + a.ka + a.T == a.o && (k[0] = a.o - a.j - l));\n var m = b.eb,\n l = b.fb + l * b.A;\n a = fc(d, e[0], a.width, f, k, m, l + (h ? 0 : 3), b.A);\n x(c == k);\n a && hb(g) && za(m, l, h, f, k, b.A);\n }\n return 0;\n }\n function gc(a) {\n var b = a.ma,\n c = b.ba.S,\n d = 11 > c,\n e = c == Ua || c == Va || c == ya || c == Db || 12 == c || hb(c);\n b.memory = null;\n b.Ib = null;\n b.Jb = null;\n b.Nd = null;\n if (!hc(b.Oa, a, e ? 11 : 12)) return 0;\n e && hb(c) && ic();\n if (a.da) alert(\"todo:use_scaling\");\n else {\n if (d) {\n if (((b.Ib = Vd), a.Kb)) {\n c = (a.U + 1) >> 1;\n b.memory = V(a.U + 2 * c);\n if (null == b.memory) return 0;\n b.ec = b.memory;\n b.fc = 0;\n b.cc = b.ec;\n b.dc = b.fc + a.U;\n b.Mc = b.cc;\n b.Nc = b.dc + c;\n b.Ib = Wd;\n ic();\n }\n } else alert(\"todo:EmitYUV\");\n e && ((b.Jb = Xd), d && Aa());\n }\n if (d && !jc) {\n for (a = 0; 256 > a; ++a)\n (Yd[a] = (89858 * (a - 128) + Ba) >> Wa),\n (Zd[a] = -22014 * (a - 128) + Ba),\n ($d[a] = -45773 * (a - 128)),\n (ae[a] = (113618 * (a - 128) + Ba) >> Wa);\n for (a = ta; a < Eb; ++a)\n (b = (76283 * (a - 16) + Ba) >> Wa),\n (be[a - ta] = ga(b, 255)),\n (ce[a - ta] = ga((b + 8) >> 4, 15));\n jc = 1;\n }\n return 1;\n }\n function kc(a) {\n var b = a.ma,\n c = a.U,\n d = a.T;\n x(!(a.ka & 1));\n if (0 >= c || 0 >= d) return 0;\n c = b.Ib(a, b);\n null != b.Jb && b.Jb(a, b, c);\n b.Dc += c;\n return 1;\n }\n function lc(a) {\n a.ma.memory = null;\n }\n function mc(a, b, c, d) {\n if (47 != D(a, 8)) return 0;\n b[0] = D(a, 14) + 1;\n c[0] = D(a, 14) + 1;\n d[0] = D(a, 1);\n return 0 != D(a, 3) ? 0 : !a.h;\n }\n function ib(a, b) {\n if (4 > a) return a + 1;\n var c = (a - 2) >> 1;\n return ((2 + (a & 1)) << c) + D(b, c) + 1;\n }\n function nc(a, b) {\n if (120 < b) return b - 120;\n var c = de[b - 1],\n c = (c >> 4) * a + (8 - (c & 15));\n return 1 <= c ? c : 1;\n }\n function ua(a, b, c) {\n var d = pb(c);\n b += d & 255;\n var e = a[b].g - 8;\n 0 < e &&\n (qb(c, c.u + 8),\n (d = pb(c)),\n (b += a[b].value),\n (b += d & ((1 << e) - 1)));\n qb(c, c.u + a[b].g);\n return a[b].value;\n }\n function ub(a, b, c) {\n c.g += a.g;\n c.value += (a.value << b) >>> 0;\n x(8 >= c.g);\n return a.g;\n }\n function ha(a, b, c) {\n var d = a.xc;\n b = 0 == d ? 0 : a.vc[a.md * (c >> d) + (b >> d)];\n x(b < a.Wb);\n return a.Ya[b];\n }\n function oc(a, b, c, d) {\n var e = a.ab,\n f = a.c * b,\n g = a.C;\n b = g + b;\n var h = c,\n k = d;\n d = a.Ta;\n for (c = a.Ua; 0 < e--; ) {\n var l = a.gc[e],\n m = g,\n n = b,\n r = h,\n q = k,\n k = d,\n h = c,\n t = l.Ea;\n x(m < n);\n x(n <= l.nc);\n switch (l.hc) {\n case 2:\n pc(r, q, (n - m) * t, k, h);\n break;\n case 0:\n var v = l,\n p = m,\n u = n,\n w = k,\n y = h,\n A = v.Ea;\n 0 == p &&\n (ee(r, q, null, null, 1, w, y),\n cc(r, q + 1, 0, 0, A - 1, w, y + 1),\n (q += A),\n (y += A),\n ++p);\n for (\n var E = 1 << v.b,\n B = E - 1,\n C = xa(A, v.b),\n N = v.K,\n v = v.w + (p >> v.b) * C;\n p < u;\n\n ) {\n var z = N,\n Q = v,\n S = 1;\n for (fe(r, q, w, y - A, 1, w, y); S < A; ) {\n var K = qc[(z[Q++] >> 8) & 15],\n D = (S & ~B) + E;\n D > A && (D = A);\n K(r, q + +S, w, y + S - A, D - S, w, y + S);\n S = D;\n }\n q += A;\n y += A;\n ++p;\n p & B || (v += C);\n }\n n != l.nc && I(k, h - t, k, h + (n - m - 1) * t, t);\n break;\n case 1:\n t = r;\n u = q;\n r = l.Ea;\n q = 1 << l.b;\n w = q - 1;\n y = r & ~w;\n A = r - y;\n p = xa(r, l.b);\n E = l.K;\n for (l = l.w + (m >> l.b) * p; m < n; ) {\n B = E;\n C = l;\n N = new Jd();\n v = u + y;\n for (z = u + r; u < v; )\n dc(B[C++], N), Fb(N, t, u, q, k, h), (u += q), (h += q);\n u < z &&\n (dc(B[C++], N), Fb(N, t, u, A, k, h), (u += A), (h += A));\n ++m;\n m & w || (l += p);\n }\n break;\n case 3:\n if (r == k && q == h && 0 < l.b) {\n y = (n - m) * xa(l.Ea, l.b);\n t = h + (n - m) * t - y;\n u = k;\n r = t;\n q = k;\n w = h;\n A = y;\n p = [];\n for (y = A - 1; 0 <= y; --y) p[y] = q[w + y];\n for (y = A - 1; 0 <= y; --y) u[r + y] = p[y];\n rc(l, m, n, k, t, k, h);\n } else rc(l, m, n, r, q, k, h);\n }\n h = d;\n k = c;\n }\n k != c && I(d, c, h, k, f);\n }\n function ge(a, b) {\n var c = a.V,\n d = a.Ba + a.c * a.C,\n e = b - a.C;\n x(b <= a.l.o);\n x(16 >= e);\n if (0 < e) {\n var f = a.l,\n g = a.Ta,\n h = a.Ua,\n k = f.width;\n oc(a, e, c, d);\n h = [h];\n c = a.C;\n d = b;\n e = h;\n x(c < d);\n x(f.v < f.va);\n d > f.o && (d = f.o);\n if (c < f.j) {\n var l = f.j - c,\n c = f.j;\n e[0] += l * k;\n }\n c >= d\n ? (c = 0)\n : ((e[0] += 4 * f.v),\n (f.ka = c - f.j),\n (f.U = f.va - f.v),\n (f.T = d - c),\n (c = 1));\n if (c) {\n h = h[0];\n c = a.ca;\n if (11 > c.S) {\n for (\n var m = c.f.RGBA,\n d = c.S,\n e = f.U,\n f = f.T,\n l = m.eb,\n n = m.A,\n r = f,\n m = m.fb + a.Ma * m.A;\n 0 < r--;\n\n ) {\n var q = g,\n t = h,\n v = e,\n p = l,\n u = m;\n switch (d) {\n case Ca:\n sc(q, t, v, p, u);\n break;\n case Ua:\n Gb(q, t, v, p, u);\n break;\n case zb:\n Gb(q, t, v, p, u);\n za(p, u, 0, v, 1, 0);\n break;\n case tc:\n uc(q, t, v, p, u);\n break;\n case Va:\n fb(q, t, v, p, u, 1);\n break;\n case Ab:\n fb(q, t, v, p, u, 1);\n za(p, u, 0, v, 1, 0);\n break;\n case ya:\n fb(q, t, v, p, u, 0);\n break;\n case Ja:\n fb(q, t, v, p, u, 0);\n za(p, u, 1, v, 1, 0);\n break;\n case Db:\n Hb(q, t, v, p, u);\n break;\n case Bb:\n Hb(q, t, v, p, u);\n vc(p, u, v, 1, 0);\n break;\n case wc:\n xc(q, t, v, p, u);\n break;\n default:\n x(0);\n }\n h += k;\n m += n;\n }\n a.Ma += f;\n } else alert(\"todo:EmitRescaledRowsYUVA\");\n x(a.Ma <= c.height);\n }\n }\n a.C = b;\n x(a.C <= a.i);\n }\n function yc(a) {\n var b;\n if (0 < a.ua) return 0;\n for (b = 0; b < a.Wb; ++b) {\n var c = a.Ya[b].G,\n d = a.Ya[b].H;\n if (\n 0 < c[1][d[1] + 0].g ||\n 0 < c[2][d[2] + 0].g ||\n 0 < c[3][d[3] + 0].g\n )\n return 0;\n }\n return 1;\n }\n function zc(a, b, c, d, e, f) {\n if (0 != a.Z) {\n var g = a.qd,\n h = a.rd;\n for (x(null != ia[a.Z]); b < c; ++b)\n ia[a.Z](g, h, d, e, d, e, f), (g = d), (h = e), (e += f);\n a.qd = g;\n a.rd = h;\n }\n }\n function Ib(a, b) {\n var c = a.l.ma,\n d = 0 == c.Z || 1 == c.Z ? a.l.j : a.C,\n d = a.C < d ? d : a.C;\n x(b <= a.l.o);\n if (b > d) {\n var e = a.l.width,\n f = c.ca,\n g = c.tb + e * d,\n h = a.V,\n k = a.Ba + a.c * d,\n l = a.gc;\n x(1 == a.ab);\n x(3 == l[0].hc);\n he(l[0], d, b, h, k, f, g);\n zc(c, d, b, f, g, e);\n }\n a.C = a.Ma = b;\n }\n function Jb(a, b, c, d, e, f, g) {\n var h = a.$ / d,\n k = a.$ % d,\n l = a.m,\n m = a.s,\n n = c + a.$,\n r = n;\n e = c + d * e;\n var q = c + d * f,\n t = 280 + m.ua,\n v = a.Pb ? h : 16777216,\n p = 0 < m.ua ? m.Wa : null,\n u = m.wc,\n w = n < q ? ha(m, k, h) : null;\n x(a.C < f);\n x(q <= e);\n var y = !1;\n a: for (;;) {\n for (; y || n < q; ) {\n var A = 0;\n if (h >= v) {\n var v = a,\n E = n - c;\n x(v.Pb);\n v.wd = v.m;\n v.xd = E;\n 0 < v.s.ua && $b(v.s.Wa, v.s.vb);\n v = h + ie;\n }\n k & u || (w = ha(m, k, h));\n x(null != w);\n w.Qb && ((b[n] = w.qb), (y = !0));\n if (!y)\n if ((Sa(l), w.jc)) {\n var A = l,\n E = b,\n B = n,\n C = w.pd[pb(A) & (xb - 1)];\n x(w.jc);\n 256 > C.g\n ? (qb(A, A.u + C.g), (E[B] = C.value), (A = 0))\n : (qb(A, A.u + C.g - 256), x(256 <= C.value), (A = C.value));\n 0 == A && (y = !0);\n } else A = ua(w.G[0], w.H[0], l);\n if (l.h) break;\n if (y || 256 > A) {\n if (!y)\n if (w.nd) b[n] = (w.qb | (A << 8)) >>> 0;\n else {\n Sa(l);\n y = ua(w.G[1], w.H[1], l);\n Sa(l);\n E = ua(w.G[2], w.H[2], l);\n B = ua(w.G[3], w.H[3], l);\n if (l.h) break;\n b[n] = ((B << 24) | (y << 16) | (A << 8) | E) >>> 0;\n }\n y = !1;\n ++n;\n ++k;\n if (\n k >= d &&\n ((k = 0),\n ++h,\n null != g && h <= f && !(h % 16) && g(a, h),\n null != p)\n )\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (280 > A) {\n A = ib(A - 256, l);\n E = ua(w.G[4], w.H[4], l);\n Sa(l);\n E = ib(E, l);\n E = nc(d, E);\n if (l.h) break;\n if (n - c < E || e - n < A) break a;\n else for (B = 0; B < A; ++B) b[n + B] = b[n + B - E];\n n += A;\n for (k += A; k >= d; )\n (k -= d), ++h, null != g && h <= f && !(h % 16) && g(a, h);\n x(n <= e);\n k & u && (w = ha(m, k, h));\n if (null != p)\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (A < t) {\n y = A - 280;\n for (x(null != p); r < n; )\n (A = b[r++]), (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n A = n;\n E = p;\n x(!(y >>> E.Xa));\n b[A] = E.X[y];\n y = !0;\n } else break a;\n y || x(l.h == db(l));\n }\n if (a.Pb && l.h && n < e)\n x(a.m.h),\n (a.a = 5),\n (a.m = a.wd),\n (a.$ = a.xd),\n 0 < a.s.ua && $b(a.s.vb, a.s.Wa);\n else if (l.h) break a;\n else null != g && g(a, h > f ? f : h), (a.a = 0), (a.$ = n - c);\n return 1;\n }\n a.a = 3;\n return 0;\n }\n function Ac(a) {\n x(null != a);\n a.vc = null;\n a.yc = null;\n a.Ya = null;\n var b = a.Wa;\n null != b && (b.X = null);\n a.vb = null;\n x(null != a);\n }\n function Bc() {\n var a = new je();\n if (null == a) return null;\n a.a = 0;\n a.xb = Cc;\n gb(\"Predictor\", \"VP8LPredictors\");\n gb(\"Predictor\", \"VP8LPredictors_C\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd_C\");\n pc = Kd;\n Fb = Ld;\n sc = Md;\n Gb = Nd;\n Hb = Od;\n xc = Pd;\n uc = Qd;\n self.VP8LMapColor32b = ke;\n self.VP8LMapColor8b = le;\n return a;\n }\n function rb(a, b, c, d, e) {\n var f = 1,\n g = [a],\n h = [b],\n k = d.m,\n l = d.s,\n m = null,\n n = 0;\n a: for (;;) {\n if (c)\n for (; f && D(k, 1); ) {\n var r = g,\n q = h,\n t = d,\n v = 1,\n p = t.m,\n u = t.gc[t.ab],\n w = D(p, 2);\n if (t.Oc & (1 << w)) f = 0;\n else {\n t.Oc |= 1 << w;\n u.hc = w;\n u.Ea = r[0];\n u.nc = q[0];\n u.K = [null];\n ++t.ab;\n x(4 >= t.ab);\n switch (w) {\n case 0:\n case 1:\n u.b = D(p, 3) + 2;\n v = rb(xa(u.Ea, u.b), xa(u.nc, u.b), 0, t, u.K);\n u.K = u.K[0];\n break;\n case 3:\n var y = D(p, 8) + 1,\n A = 16 < y ? 0 : 4 < y ? 1 : 2 < y ? 2 : 3;\n r[0] = xa(u.Ea, A);\n u.b = A;\n var v = rb(y, 1, 0, t, u.K),\n E;\n if ((E = v)) {\n var B,\n C = y,\n N = u,\n z = 1 << (8 >> N.b),\n Q = V(z);\n if (null == Q) E = 0;\n else {\n var S = N.K[0],\n K = N.w;\n Q[0] = N.K[0][0];\n for (B = 1; B < 1 * C; ++B) Q[B] = yb(S[K + B], Q[B - 1]);\n for (; B < 4 * z; ++B) Q[B] = 0;\n N.K[0] = null;\n N.K[0] = Q;\n E = 1;\n }\n }\n v = E;\n break;\n case 2:\n break;\n default:\n x(0);\n }\n f = v;\n }\n }\n g = g[0];\n h = h[0];\n if (f && D(k, 1) && ((n = D(k, 4)), (f = 1 <= n && 11 >= n), !f)) {\n d.a = 3;\n break a;\n }\n var H;\n if ((H = f))\n b: {\n var F = d,\n G = g,\n L = h,\n J = n,\n T = c,\n Da,\n ba,\n X = F.m,\n R = F.s,\n P = [null],\n U,\n W = 1,\n aa = 0,\n na = me[J];\n c: for (;;) {\n if (T && D(X, 1)) {\n var ca = D(X, 3) + 2,\n ga = xa(G, ca),\n ka = xa(L, ca),\n qa = ga * ka;\n if (!rb(ga, ka, 0, F, P)) break c;\n P = P[0];\n R.xc = ca;\n for (Da = 0; Da < qa; ++Da) {\n var ia = (P[Da] >> 8) & 65535;\n P[Da] = ia;\n ia >= W && (W = ia + 1);\n }\n }\n if (X.h) break c;\n for (ba = 0; 5 > ba; ++ba) {\n var Y = Dc[ba];\n !ba && 0 < J && (Y += 1 << J);\n aa < Y && (aa = Y);\n }\n var ma = wa(W * na, O);\n var ua = W,\n va = wa(ua, Ub);\n if (null == va) var la = null;\n else x(65536 >= ua), (la = va);\n var ha = V(aa);\n if (null == la || null == ha || null == ma) {\n F.a = 1;\n break c;\n }\n var pa = ma;\n for (Da = U = 0; Da < W; ++Da) {\n var ja = la[Da],\n da = ja.G,\n ea = ja.H,\n Fa = 0,\n ra = 1,\n Ha = 0;\n for (ba = 0; 5 > ba; ++ba) {\n Y = Dc[ba];\n da[ba] = pa;\n ea[ba] = U;\n !ba && 0 < J && (Y += 1 << J);\n d: {\n var sa,\n za = Y,\n ta = F,\n oa = ha,\n db = pa,\n eb = U,\n Ia = 0,\n Ka = ta.m,\n fb = D(Ka, 1);\n M(oa, 0, 0, za);\n if (fb) {\n var gb = D(Ka, 1) + 1,\n hb = D(Ka, 1),\n Ja = D(Ka, 0 == hb ? 1 : 8);\n oa[Ja] = 1;\n 2 == gb && ((Ja = D(Ka, 8)), (oa[Ja] = 1));\n var ya = 1;\n } else {\n var Ua = V(19),\n Va = D(Ka, 4) + 4;\n if (19 < Va) {\n ta.a = 3;\n var Aa = 0;\n break d;\n }\n for (sa = 0; sa < Va; ++sa) Ua[ne[sa]] = D(Ka, 3);\n var Ba = void 0,\n sb = void 0,\n Wa = ta,\n ib = Ua,\n Ca = za,\n Xa = oa,\n Oa = 0,\n La = Wa.m,\n Ya = 8,\n Za = wa(128, O);\n e: for (;;) {\n if (!Z(Za, 0, 7, ib, 19)) break e;\n if (D(La, 1)) {\n var kb = 2 + 2 * D(La, 3),\n Ba = 2 + D(La, kb);\n if (Ba > Ca) break e;\n } else Ba = Ca;\n for (sb = 0; sb < Ca && Ba--; ) {\n Sa(La);\n var $a = Za[0 + (pb(La) & 127)];\n qb(La, La.u + $a.g);\n var jb = $a.value;\n if (16 > jb) (Xa[sb++] = jb), 0 != jb && (Ya = jb);\n else {\n var lb = 16 == jb,\n ab = jb - 16,\n mb = oe[ab],\n bb = D(La, pe[ab]) + mb;\n if (sb + bb > Ca) break e;\n else\n for (var nb = lb ? Ya : 0; 0 < bb--; )\n Xa[sb++] = nb;\n }\n }\n Oa = 1;\n break e;\n }\n Oa || (Wa.a = 3);\n ya = Oa;\n }\n (ya = ya && !Ka.h) && (Ia = Z(db, eb, 8, oa, za));\n ya && 0 != Ia ? (Aa = Ia) : ((ta.a = 3), (Aa = 0));\n }\n if (0 == Aa) break c;\n ra && 1 == qe[ba] && (ra = 0 == pa[U].g);\n Fa += pa[U].g;\n U += Aa;\n if (3 >= ba) {\n var Pa = ha[0],\n tb;\n for (tb = 1; tb < Y; ++tb) ha[tb] > Pa && (Pa = ha[tb]);\n Ha += Pa;\n }\n }\n ja.nd = ra;\n ja.Qb = 0;\n ra &&\n ((ja.qb =\n ((da[3][ea[3] + 0].value << 24) |\n (da[1][ea[1] + 0].value << 16) |\n da[2][ea[2] + 0].value) >>>\n 0),\n 0 == Fa &&\n 256 > da[0][ea[0] + 0].value &&\n ((ja.Qb = 1), (ja.qb += da[0][ea[0] + 0].value << 8)));\n ja.jc = !ja.Qb && 6 > Ha;\n if (ja.jc) {\n var Ga,\n Ea = ja;\n for (Ga = 0; Ga < xb; ++Ga) {\n var Ma = Ga,\n Na = Ea.pd[Ma],\n vb = Ea.G[0][Ea.H[0] + Ma];\n 256 <= vb.value\n ? ((Na.g = vb.g + 256), (Na.value = vb.value))\n : ((Na.g = 0),\n (Na.value = 0),\n (Ma >>= ub(vb, 8, Na)),\n (Ma >>= ub(Ea.G[1][Ea.H[1] + Ma], 16, Na)),\n (Ma >>= ub(Ea.G[2][Ea.H[2] + Ma], 0, Na)),\n ub(Ea.G[3][Ea.H[3] + Ma], 24, Na));\n }\n }\n }\n R.vc = P;\n R.Wb = W;\n R.Ya = la;\n R.yc = ma;\n H = 1;\n break b;\n }\n H = 0;\n }\n f = H;\n if (!f) {\n d.a = 3;\n break a;\n }\n if (0 < n) {\n if (((l.ua = 1 << n), !Zb(l.Wa, n))) {\n d.a = 1;\n f = 0;\n break a;\n }\n } else l.ua = 0;\n var Qa = d,\n cb = g,\n ob = h,\n Ra = Qa.s,\n Ta = Ra.xc;\n Qa.c = cb;\n Qa.i = ob;\n Ra.md = xa(cb, Ta);\n Ra.wc = 0 == Ta ? -1 : (1 << Ta) - 1;\n if (c) {\n d.xb = re;\n break a;\n }\n m = V(g * h);\n if (null == m) {\n d.a = 1;\n f = 0;\n break a;\n }\n f = (f = Jb(d, m, 0, g, h, h, null)) && !k.h;\n break a;\n }\n f\n ? (null != e ? (e[0] = m) : (x(null == m), x(c)), (d.$ = 0), c || Ac(l))\n : Ac(l);\n return f;\n }\n function Ec(a, b) {\n var c = a.c * a.i,\n d = c + b + 16 * b;\n x(a.c <= b);\n a.V = V(d);\n if (null == a.V) return (a.Ta = null), (a.Ua = 0), (a.a = 1), 0;\n a.Ta = a.V;\n a.Ua = a.Ba + c + b;\n return 1;\n }\n function se(a, b) {\n var c = a.C,\n d = b - c,\n e = a.V,\n f = a.Ba + a.c * c;\n for (x(b <= a.l.o); 0 < d; ) {\n var g = 16 < d ? 16 : d,\n h = a.l.ma,\n k = a.l.width,\n l = k * g,\n m = h.ca,\n n = h.tb + k * c,\n r = a.Ta,\n q = a.Ua;\n oc(a, g, e, f);\n Fc(r, q, m, n, l);\n zc(h, c, c + g, m, n, k);\n d -= g;\n e += g * a.c;\n c += g;\n }\n x(c == b);\n a.C = a.Ma = b;\n }\n function te(a, b) {\n var c = [0],\n d = [0],\n e = [0];\n a: for (;;) {\n if (null == a) return 0;\n if (null == b) return (a.a = 2), 0;\n a.l = b;\n a.a = 0;\n cb(a.m, b.data, b.w, b.ha);\n if (!mc(a.m, c, d, e)) {\n a.a = 3;\n break a;\n }\n a.xb = Cc;\n b.width = c[0];\n b.height = d[0];\n if (!rb(c[0], d[0], 1, a, null)) break a;\n return 1;\n }\n x(0 != a.a);\n return 0;\n }\n function ue() {\n this.ub = this.yd = this.td = this.Rb = 0;\n }\n function ve() {\n this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;\n }\n function we() {\n this.Fb = this.Bb = this.Cb = 0;\n this.Zb = V(4);\n this.Lb = V(4);\n }\n function Gc() {\n this.Yb = wb();\n }\n function xe() {\n this.jb = V(3);\n this.Wc = Ed([4, 8], Gc);\n this.Xc = Ed([4, 17], Gc);\n }\n function ye() {\n this.Pc = this.wb = this.Tb = this.zd = 0;\n this.vd = new V(4);\n this.od = new V(4);\n }\n function Xa() {\n this.ld = this.La = this.dd = this.tc = 0;\n }\n function Hc() {\n this.Na = this.la = 0;\n }\n function ze() {\n this.Sc = [0, 0];\n this.Eb = [0, 0];\n this.Qc = [0, 0];\n this.ia = this.lc = 0;\n }\n function Kb() {\n this.ad = V(384);\n this.Za = 0;\n this.Ob = V(16);\n this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;\n }\n function Ae() {\n this.uc = this.M = this.Nb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.ya = Array(new Kb());\n this.aa = 0;\n this.l = new Oa();\n }\n function Ic() {\n this.y = V(16);\n this.f = V(8);\n this.ea = V(8);\n }\n function Be() {\n this.cb = this.a = 0;\n this.sc = \"\";\n this.m = new Wb();\n this.Od = new ue();\n this.Kc = new ve();\n this.ed = new ye();\n this.Qa = new we();\n this.Ic = this.$c = this.Aa = 0;\n this.D = new Ae();\n this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0;\n this.Jc = wa(8, Wb);\n this.ia = 0;\n new F();\n this.pb = wa(4, ze);\n this.Pa = new xe();\n this.Bd = this.kc = 0;\n this.Ac = [];\n this.Bc = 0;\n this.zc = [0, 0, 0, 0];\n this.Gd = Array(new Ic());\n this.Hd = 0;\n this.rb = Array(new Hc());\n this.sb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.oc = [];\n this.pc = 0;\n this.sa = [];\n this.ta = 0;\n this.qa = [];\n this.ra = 0;\n this.Ha = [];\n this.B = this.R = this.Ia = 0;\n this.Ec = [];\n this.M = this.ja = this.Vb = this.Fc = 0;\n this.ya = Array(new Kb());\n this.L = this.aa = 0;\n this.gd = Ed([4, 2], Xa);\n this.ga = null;\n this.Fa = [];\n this.Cc = this.qc = this.P = 0;\n this.Gb = [];\n this.Uc = 0;\n this.mb = [];\n this.nb = 0;\n this.rc = [];\n this.Ga = this.Vc = 0;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function Oa() {\n this.T = this.U = this.ka = this.height = this.width = 0;\n this.y = [];\n this.f = [];\n this.ea = [];\n this.Rc = this.fa = this.W = this.N = this.O = 0;\n this.ma = \"void\";\n this.put = \"VP8IoPutHook\";\n this.ac = \"VP8IoSetupHook\";\n this.bc = \"VP8IoTeardownHook\";\n this.ha = this.Kb = 0;\n this.data = [];\n this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0;\n this.F = [];\n this.J = 0;\n }\n function Ce() {\n var a = new Be();\n null != a &&\n ((a.a = 0), (a.sc = \"OK\"), (a.cb = 0), (a.Xb = 0), oa || (oa = De));\n return a;\n }\n function T(a, b, c) {\n 0 == a.a && ((a.a = b), (a.sc = c), (a.cb = 0));\n return 0;\n }\n function Jc(a, b, c) {\n return 3 <= c && 157 == a[b + 0] && 1 == a[b + 1] && 42 == a[b + 2];\n }\n function Kc(a, b) {\n if (null == a) return 0;\n a.a = 0;\n a.sc = \"OK\";\n if (null == b) return T(a, 2, \"null VP8Io passed to VP8GetHeaders()\");\n var c = b.data;\n var d = b.w;\n var e = b.ha;\n if (4 > e) return T(a, 7, \"Truncated header.\");\n var f = c[d + 0] | (c[d + 1] << 8) | (c[d + 2] << 16);\n var g = a.Od;\n g.Rb = !(f & 1);\n g.td = (f >> 1) & 7;\n g.yd = (f >> 4) & 1;\n g.ub = f >> 5;\n if (3 < g.td) return T(a, 3, \"Incorrect keyframe parameters.\");\n if (!g.yd) return T(a, 4, \"Frame not displayable.\");\n d += 3;\n e -= 3;\n var h = a.Kc;\n if (g.Rb) {\n if (7 > e) return T(a, 7, \"cannot parse picture header\");\n if (!Jc(c, d, e)) return T(a, 3, \"Bad code word\");\n h.c = ((c[d + 4] << 8) | c[d + 3]) & 16383;\n h.Td = c[d + 4] >> 6;\n h.i = ((c[d + 6] << 8) | c[d + 5]) & 16383;\n h.Ud = c[d + 6] >> 6;\n d += 7;\n e -= 7;\n a.za = (h.c + 15) >> 4;\n a.Ub = (h.i + 15) >> 4;\n b.width = h.c;\n b.height = h.i;\n b.Da = 0;\n b.j = 0;\n b.v = 0;\n b.va = b.width;\n b.o = b.height;\n b.da = 0;\n b.ib = b.width;\n b.hb = b.height;\n b.U = b.width;\n b.T = b.height;\n f = a.Pa;\n M(f.jb, 0, 255, f.jb.length);\n f = a.Qa;\n x(null != f);\n f.Cb = 0;\n f.Bb = 0;\n f.Fb = 1;\n M(f.Zb, 0, 0, f.Zb.length);\n M(f.Lb, 0, 0, f.Lb);\n }\n if (g.ub > e) return T(a, 7, \"bad partition length\");\n f = a.m;\n ma(f, c, d, g.ub);\n d += g.ub;\n e -= g.ub;\n g.Rb && ((h.Ld = G(f)), (h.Kd = G(f)));\n h = a.Qa;\n var k = a.Pa,\n l;\n x(null != f);\n x(null != h);\n h.Cb = G(f);\n if (h.Cb) {\n h.Bb = G(f);\n if (G(f)) {\n h.Fb = G(f);\n for (l = 0; 4 > l; ++l) h.Zb[l] = G(f) ? ca(f, 7) : 0;\n for (l = 0; 4 > l; ++l) h.Lb[l] = G(f) ? ca(f, 6) : 0;\n }\n if (h.Bb) for (l = 0; 3 > l; ++l) k.jb[l] = G(f) ? na(f, 8) : 255;\n } else h.Bb = 0;\n if (f.Ka) return T(a, 3, \"cannot parse segment header\");\n h = a.ed;\n h.zd = G(f);\n h.Tb = na(f, 6);\n h.wb = na(f, 3);\n h.Pc = G(f);\n if (h.Pc && G(f)) {\n for (k = 0; 4 > k; ++k) G(f) && (h.vd[k] = ca(f, 6));\n for (k = 0; 4 > k; ++k) G(f) && (h.od[k] = ca(f, 6));\n }\n a.L = 0 == h.Tb ? 0 : h.zd ? 1 : 2;\n if (f.Ka) return T(a, 3, \"cannot parse filter header\");\n l = d;\n var m = e;\n e = l;\n d = l + m;\n h = m;\n a.Xb = (1 << na(a.m, 2)) - 1;\n k = a.Xb;\n if (m < 3 * k) c = 7;\n else {\n l += 3 * k;\n h -= 3 * k;\n for (m = 0; m < k; ++m) {\n var n = c[e + 0] | (c[e + 1] << 8) | (c[e + 2] << 16);\n n > h && (n = h);\n ma(a.Jc[+m], c, l, n);\n l += n;\n h -= n;\n e += 3;\n }\n ma(a.Jc[+k], c, l, h);\n c = l < d ? 0 : 5;\n }\n if (0 != c) return T(a, c, \"cannot parse partitions\");\n l = a.m;\n c = na(l, 7);\n e = G(l) ? ca(l, 4) : 0;\n d = G(l) ? ca(l, 4) : 0;\n h = G(l) ? ca(l, 4) : 0;\n k = G(l) ? ca(l, 4) : 0;\n l = G(l) ? ca(l, 4) : 0;\n m = a.Qa;\n for (n = 0; 4 > n; ++n) {\n if (m.Cb) {\n var r = m.Zb[n];\n m.Fb || (r += c);\n } else if (0 < n) {\n a.pb[n] = a.pb[0];\n continue;\n } else r = c;\n var q = a.pb[n];\n q.Sc[0] = Lb[ga(r + e, 127)];\n q.Sc[1] = Mb[ga(r + 0, 127)];\n q.Eb[0] = 2 * Lb[ga(r + d, 127)];\n q.Eb[1] = (101581 * Mb[ga(r + h, 127)]) >> 16;\n 8 > q.Eb[1] && (q.Eb[1] = 8);\n q.Qc[0] = Lb[ga(r + k, 117)];\n q.Qc[1] = Mb[ga(r + l, 127)];\n q.lc = r + l;\n }\n if (!g.Rb) return T(a, 4, \"Not a key frame.\");\n G(f);\n g = a.Pa;\n for (c = 0; 4 > c; ++c) {\n for (e = 0; 8 > e; ++e)\n for (d = 0; 3 > d; ++d)\n for (h = 0; 11 > h; ++h)\n (k = K(f, Ee[c][e][d][h]) ? na(f, 8) : Fe[c][e][d][h]),\n (g.Wc[c][e].Yb[d][h] = k);\n for (e = 0; 17 > e; ++e) g.Xc[c][e] = g.Wc[c][Ge[e]];\n }\n a.kc = G(f);\n a.kc && (a.Bd = na(f, 8));\n return (a.cb = 1);\n }\n function De(a, b, c, d, e, f, g) {\n var h = b[e].Yb[c];\n for (c = 0; 16 > e; ++e) {\n if (!K(a, h[c + 0])) return e;\n for (; !K(a, h[c + 1]); )\n if (((h = b[++e].Yb[0]), (c = 0), 16 == e)) return 16;\n var k = b[e + 1].Yb;\n if (K(a, h[c + 2])) {\n var l = a,\n m = h,\n n = c;\n var r = 0;\n if (K(l, m[n + 3]))\n if (K(l, m[n + 6])) {\n h = 0;\n r = K(l, m[n + 8]);\n m = K(l, m[n + 9 + r]);\n n = 2 * r + m;\n r = 0;\n for (m = He[n]; m[h]; ++h) r += r + K(l, m[h]);\n r += 3 + (8 << n);\n } else\n K(l, m[n + 7])\n ? ((r = 7 + 2 * K(l, 165)), (r += K(l, 145)))\n : (r = 5 + K(l, 159));\n else K(l, m[n + 4]) ? (r = 3 + K(l, m[n + 5])) : (r = 2);\n h = k[2];\n } else (r = 1), (h = k[1]);\n k = g + Ie[e];\n l = a;\n 0 > l.b && Qa(l);\n var m = l.b,\n n = l.Ca >> 1,\n q = (n - (l.I >> m)) >> 31;\n --l.b;\n l.Ca += q;\n l.Ca |= 1;\n l.I -= ((n + 1) & q) << m;\n f[k] = ((r ^ q) - q) * d[(0 < e) + 0];\n }\n return 16;\n }\n function Lc(a) {\n var b = a.rb[a.sb - 1];\n b.la = 0;\n b.Na = 0;\n M(a.zc, 0, 0, a.zc.length);\n a.ja = 0;\n }\n function Je(a, b) {\n for (a.M = 0; a.M < a.Va; ++a.M) {\n var c = a.Jc[a.M & a.Xb],\n d = a.m,\n e = a,\n f;\n for (f = 0; f < e.za; ++f) {\n var g = d;\n var h = e;\n var k = h.Ac,\n l = h.Bc + 4 * f,\n m = h.zc,\n n = h.ya[h.aa + f];\n h.Qa.Bb\n ? (n.$b = K(g, h.Pa.jb[0])\n ? 2 + K(g, h.Pa.jb[2])\n : K(g, h.Pa.jb[1]))\n : (n.$b = 0);\n h.kc && (n.Ad = K(g, h.Bd));\n n.Za = !K(g, 145) + 0;\n if (n.Za) {\n var r = n.Ob,\n q = 0;\n for (h = 0; 4 > h; ++h) {\n var t = m[0 + h];\n var v;\n for (v = 0; 4 > v; ++v) {\n t = Ke[k[l + v]][t];\n for (var p = Mc[K(g, t[0])]; 0 < p; )\n p = Mc[2 * p + K(g, t[p])];\n t = -p;\n k[l + v] = t;\n }\n I(r, q, k, l, 4);\n q += 4;\n m[0 + h] = t;\n }\n } else\n (t = K(g, 156) ? (K(g, 128) ? 1 : 3) : K(g, 163) ? 2 : 0),\n (n.Ob[0] = t),\n M(k, l, t, 4),\n M(m, 0, t, 4);\n n.Dd = K(g, 142) ? (K(g, 114) ? (K(g, 183) ? 1 : 3) : 2) : 0;\n }\n if (e.m.Ka) return T(a, 7, \"Premature end-of-partition0 encountered.\");\n for (; a.ja < a.za; ++a.ja) {\n d = a;\n e = c;\n g = d.rb[d.sb - 1];\n k = d.rb[d.sb + d.ja];\n f = d.ya[d.aa + d.ja];\n if ((l = d.kc ? f.Ad : 0))\n (g.la = k.la = 0),\n f.Za || (g.Na = k.Na = 0),\n (f.Hc = 0),\n (f.Gc = 0),\n (f.ia = 0);\n else {\n var u,\n w,\n g = k,\n k = e,\n l = d.Pa.Xc,\n m = d.ya[d.aa + d.ja],\n n = d.pb[m.$b];\n h = m.ad;\n r = 0;\n q = d.rb[d.sb - 1];\n t = v = 0;\n M(h, r, 0, 384);\n if (m.Za) {\n var y = 0;\n var A = l[3];\n } else {\n p = V(16);\n var E = g.Na + q.Na;\n E = oa(k, l[1], E, n.Eb, 0, p, 0);\n g.Na = q.Na = (0 < E) + 0;\n if (1 < E) Nc(p, 0, h, r);\n else {\n var B = (p[0] + 3) >> 3;\n for (p = 0; 256 > p; p += 16) h[r + p] = B;\n }\n y = 1;\n A = l[0];\n }\n var C = g.la & 15;\n var N = q.la & 15;\n for (p = 0; 4 > p; ++p) {\n var z = N & 1;\n for (B = w = 0; 4 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, A, E, n.Sc, y, h, r)),\n (z = E > y),\n (C = (C >> 1) | (z << 7)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 4;\n N = (N >> 1) | (z << 7);\n v = ((v << 8) | w) >>> 0;\n }\n A = C;\n y = N >> 4;\n for (u = 0; 4 > u; u += 2) {\n w = 0;\n C = g.la >> (4 + u);\n N = q.la >> (4 + u);\n for (p = 0; 2 > p; ++p) {\n z = N & 1;\n for (B = 0; 2 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, l[2], E, n.Qc, 0, h, r)),\n (z = 0 < E),\n (C = (C >> 1) | (z << 3)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 2;\n N = (N >> 1) | (z << 5);\n }\n t |= w << (4 * u);\n A |= (C << 4) << u;\n y |= (N & 240) << u;\n }\n g.la = A;\n q.la = y;\n m.Hc = v;\n m.Gc = t;\n m.ia = t & 43690 ? 0 : n.ia;\n l = !(v | t);\n }\n 0 < d.L &&\n ((d.wa[d.Y + d.ja] = d.gd[f.$b][f.Za]),\n (d.wa[d.Y + d.ja].La |= !l));\n if (e.Ka) return T(a, 7, \"Premature end-of-file encountered.\");\n }\n Lc(a);\n c = a;\n d = b;\n e = 1;\n f = c.D;\n g = 0 < c.L && c.M >= c.zb && c.M <= c.Va;\n if (0 == c.Aa)\n a: {\n (f.M = c.M), (f.uc = g), Oc(c, f), (e = 1);\n w = c.D;\n f = w.Nb;\n t = Ya[c.L];\n g = t * c.R;\n k = (t / 2) * c.B;\n p = 16 * f * c.R;\n B = 8 * f * c.B;\n l = c.sa;\n m = c.ta - g + p;\n n = c.qa;\n h = c.ra - k + B;\n r = c.Ha;\n q = c.Ia - k + B;\n C = w.M;\n N = 0 == C;\n v = C >= c.Va - 1;\n 2 == c.Aa && Oc(c, w);\n if (w.uc)\n for (E = c, z = E.D.M, x(E.D.uc), w = E.yb; w < E.Hb; ++w) {\n var Q = E;\n y = w;\n A = z;\n var S = Q.D,\n D = S.Nb;\n u = Q.R;\n var S = S.wa[S.Y + y],\n F = Q.sa,\n H = Q.ta + 16 * D * u + 16 * y,\n J = S.dd,\n G = S.tc;\n if (0 != G)\n if ((x(3 <= G), 1 == Q.L))\n 0 < y && Pc(F, H, u, G + 4),\n S.La && Qc(F, H, u, G),\n 0 < A && Rc(F, H, u, G + 4),\n S.La && Sc(F, H, u, G);\n else {\n var L = Q.B,\n O = Q.qa,\n P = Q.ra + 8 * D * L + 8 * y,\n R = Q.Ha,\n Q = Q.Ia + 8 * D * L + 8 * y,\n D = S.ld;\n 0 < y &&\n (Tc(F, H, u, G + 4, J, D),\n Uc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Vc(F, H, u, G, J, D), Wc(O, P, R, Q, L, G, J, D));\n 0 < A &&\n (Xc(F, H, u, G + 4, J, D),\n Yc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Zc(F, H, u, G, J, D), $c(O, P, R, Q, L, G, J, D));\n }\n }\n c.ia && alert(\"todo:DitherRow\");\n if (null != d.put) {\n w = 16 * C;\n C = 16 * (C + 1);\n N\n ? ((d.y = c.sa),\n (d.O = c.ta + p),\n (d.f = c.qa),\n (d.N = c.ra + B),\n (d.ea = c.Ha),\n (d.W = c.Ia + B))\n : ((w -= t),\n (d.y = l),\n (d.O = m),\n (d.f = n),\n (d.N = h),\n (d.ea = r),\n (d.W = q));\n v || (C -= t);\n C > d.o && (C = d.o);\n d.F = null;\n d.J = null;\n if (\n null != c.Fa &&\n 0 < c.Fa.length &&\n w < C &&\n ((d.J = Le(c, d, w, C - w)),\n (d.F = c.mb),\n null == d.F && 0 == d.F.length)\n ) {\n e = T(c, 3, \"Could not decode alpha data.\");\n break a;\n }\n w < d.j &&\n ((t = d.j - w),\n (w = d.j),\n x(!(t & 1)),\n (d.O += c.R * t),\n (d.N += c.B * (t >> 1)),\n (d.W += c.B * (t >> 1)),\n null != d.F && (d.J += d.width * t));\n w < C &&\n ((d.O += d.v),\n (d.N += d.v >> 1),\n (d.W += d.v >> 1),\n null != d.F && (d.J += d.v),\n (d.ka = w - d.j),\n (d.U = d.va - d.v),\n (d.T = C - w),\n (e = d.put(d)));\n }\n f + 1 != c.Ic ||\n v ||\n (I(c.sa, c.ta - g, l, m + 16 * c.R, g),\n I(c.qa, c.ra - k, n, h + 8 * c.B, k),\n I(c.Ha, c.Ia - k, r, q + 8 * c.B, k));\n }\n if (!e) return T(a, 6, \"Output aborted.\");\n }\n return 1;\n }\n function Me(a, b) {\n if (null == a) return 0;\n if (null == b) return T(a, 2, \"NULL VP8Io parameter in VP8Decode().\");\n if (!a.cb && !Kc(a, b)) return 0;\n x(a.cb);\n if (null == b.ac || b.ac(b)) {\n b.ob && (a.L = 0);\n var c = Ya[a.L];\n 2 == a.L\n ? ((a.yb = 0), (a.zb = 0))\n : ((a.yb = (b.v - c) >> 4),\n (a.zb = (b.j - c) >> 4),\n 0 > a.yb && (a.yb = 0),\n 0 > a.zb && (a.zb = 0));\n a.Va = (b.o + 15 + c) >> 4;\n a.Hb = (b.va + 15 + c) >> 4;\n a.Hb > a.za && (a.Hb = a.za);\n a.Va > a.Ub && (a.Va = a.Ub);\n if (0 < a.L) {\n var d = a.ed;\n for (c = 0; 4 > c; ++c) {\n var e;\n if (a.Qa.Cb) {\n var f = a.Qa.Lb[c];\n a.Qa.Fb || (f += d.Tb);\n } else f = d.Tb;\n for (e = 0; 1 >= e; ++e) {\n var g = a.gd[c][e],\n h = f;\n d.Pc && ((h += d.vd[0]), e && (h += d.od[0]));\n h = 0 > h ? 0 : 63 < h ? 63 : h;\n if (0 < h) {\n var k = h;\n 0 < d.wb &&\n ((k = 4 < d.wb ? k >> 2 : k >> 1),\n k > 9 - d.wb && (k = 9 - d.wb));\n 1 > k && (k = 1);\n g.dd = k;\n g.tc = 2 * h + k;\n g.ld = 40 <= h ? 2 : 15 <= h ? 1 : 0;\n } else g.tc = 0;\n g.La = e;\n }\n }\n }\n c = 0;\n } else T(a, 6, \"Frame setup failed\"), (c = a.a);\n if ((c = 0 == c)) {\n if (c) {\n a.$c = 0;\n 0 < a.Aa || (a.Ic = Ne);\n b: {\n c = a.Ic;\n var k = a.za,\n d = 4 * k,\n l = 32 * k,\n m = k + 1,\n n = 0 < a.L ? k * (0 < a.Aa ? 2 : 1) : 0,\n r = (2 == a.Aa ? 2 : 1) * k;\n e = ((3 * (16 * c + Ya[a.L])) / 2) * l;\n f = null != a.Fa && 0 < a.Fa.length ? a.Kc.c * a.Kc.i : 0;\n g = d + 832 + e + f;\n if (g != g) c = 0;\n else {\n if (g > a.Vb) {\n a.Vb = 0;\n a.Ec = V(g);\n a.Fc = 0;\n if (null == a.Ec) {\n c = T(a, 1, \"no memory during frame initialization.\");\n break b;\n }\n a.Vb = g;\n }\n g = a.Ec;\n h = a.Fc;\n a.Ac = g;\n a.Bc = h;\n h += d;\n a.Gd = wa(l, Ic);\n a.Hd = 0;\n a.rb = wa(m + 1, Hc);\n a.sb = 1;\n a.wa = n ? wa(n, Xa) : null;\n a.Y = 0;\n a.D.Nb = 0;\n a.D.wa = a.wa;\n a.D.Y = a.Y;\n 0 < a.Aa && (a.D.Y += k);\n x(!0);\n a.oc = g;\n a.pc = h;\n h += 832;\n a.ya = wa(r, Kb);\n a.aa = 0;\n a.D.ya = a.ya;\n a.D.aa = a.aa;\n 2 == a.Aa && (a.D.aa += k);\n a.R = 16 * k;\n a.B = 8 * k;\n l = Ya[a.L];\n k = l * a.R;\n l = (l / 2) * a.B;\n a.sa = g;\n a.ta = h + k;\n a.qa = a.sa;\n a.ra = a.ta + 16 * c * a.R + l;\n a.Ha = a.qa;\n a.Ia = a.ra + 8 * c * a.B + l;\n a.$c = 0;\n h += e;\n a.mb = f ? g : null;\n a.nb = f ? h : null;\n x(h + f <= a.Fc + a.Vb);\n Lc(a);\n M(a.Ac, a.Bc, 0, d);\n c = 1;\n }\n }\n if (c) {\n b.ka = 0;\n b.y = a.sa;\n b.O = a.ta;\n b.f = a.qa;\n b.N = a.ra;\n b.ea = a.Ha;\n b.Vd = a.Ia;\n b.fa = a.R;\n b.Rc = a.B;\n b.F = null;\n b.J = 0;\n if (!ad) {\n for (c = -255; 255 >= c; ++c) bd[255 + c] = 0 > c ? -c : c;\n for (c = -1020; 1020 >= c; ++c)\n cd[1020 + c] = -128 > c ? -128 : 127 < c ? 127 : c;\n for (c = -112; 112 >= c; ++c)\n dd[112 + c] = -16 > c ? -16 : 15 < c ? 15 : c;\n for (c = -255; 510 >= c; ++c)\n ed[255 + c] = 0 > c ? 0 : 255 < c ? 255 : c;\n ad = 1;\n }\n Nc = Oe;\n Za = Pe;\n Nb = Qe;\n pa = Re;\n Ob = Se;\n fd = Te;\n Xc = Ue;\n Tc = Ve;\n Yc = We;\n Uc = Xe;\n Zc = Ye;\n Vc = Ze;\n $c = $e;\n Wc = af;\n Rc = gd;\n Pc = hd;\n Sc = bf;\n Qc = cf;\n W[0] = df;\n W[1] = ef;\n W[2] = ff;\n W[3] = gf;\n W[4] = hf;\n W[5] = jf;\n W[6] = kf;\n W[7] = lf;\n W[8] = mf;\n W[9] = nf;\n Y[0] = of;\n Y[1] = pf;\n Y[2] = qf;\n Y[3] = rf;\n Y[4] = sf;\n Y[5] = tf;\n Y[6] = uf;\n ka[0] = vf;\n ka[1] = wf;\n ka[2] = xf;\n ka[3] = yf;\n ka[4] = zf;\n ka[5] = Af;\n ka[6] = Bf;\n c = 1;\n } else c = 0;\n }\n c && (c = Je(a, b));\n null != b.bc && b.bc(b);\n c &= 1;\n }\n if (!c) return 0;\n a.cb = 0;\n return c;\n }\n function qa(a, b, c, d, e) {\n e = a[b + c + 32 * d] + (e >> 3);\n a[b + c + 32 * d] = e & -256 ? (0 > e ? 0 : 255) : e;\n }\n function kb(a, b, c, d, e, f) {\n qa(a, b, 0, c, d + e);\n qa(a, b, 1, c, d + f);\n qa(a, b, 2, c, d - f);\n qa(a, b, 3, c, d - e);\n }\n function da(a) {\n return ((20091 * a) >> 16) + a;\n }\n function id(a, b, c, d) {\n var e = 0,\n f;\n var g = V(16);\n for (f = 0; 4 > f; ++f) {\n var h = a[b + 0] + a[b + 8];\n var k = a[b + 0] - a[b + 8];\n var l = ((35468 * a[b + 4]) >> 16) - da(a[b + 12]);\n var m = da(a[b + 4]) + ((35468 * a[b + 12]) >> 16);\n g[e + 0] = h + m;\n g[e + 1] = k + l;\n g[e + 2] = k - l;\n g[e + 3] = h - m;\n e += 4;\n b++;\n }\n for (f = e = 0; 4 > f; ++f)\n (a = g[e + 0] + 4),\n (h = a + g[e + 8]),\n (k = a - g[e + 8]),\n (l = ((35468 * g[e + 4]) >> 16) - da(g[e + 12])),\n (m = da(g[e + 4]) + ((35468 * g[e + 12]) >> 16)),\n qa(c, d, 0, 0, h + m),\n qa(c, d, 1, 0, k + l),\n qa(c, d, 2, 0, k - l),\n qa(c, d, 3, 0, h - m),\n e++,\n (d += 32);\n }\n function Te(a, b, c, d) {\n var e = a[b + 0] + 4,\n f = (35468 * a[b + 4]) >> 16,\n g = da(a[b + 4]),\n h = (35468 * a[b + 1]) >> 16;\n a = da(a[b + 1]);\n kb(c, d, 0, e + g, a, h);\n kb(c, d, 1, e + f, a, h);\n kb(c, d, 2, e - f, a, h);\n kb(c, d, 3, e - g, a, h);\n }\n function Pe(a, b, c, d, e) {\n id(a, b, c, d);\n e && id(a, b + 16, c, d + 4);\n }\n function Qe(a, b, c, d) {\n Za(a, b + 0, c, d, 1);\n Za(a, b + 32, c, d + 128, 1);\n }\n function Re(a, b, c, d) {\n a = a[b + 0] + 4;\n var e;\n for (e = 0; 4 > e; ++e) for (b = 0; 4 > b; ++b) qa(c, d, b, e, a);\n }\n function Se(a, b, c, d) {\n a[b + 0] && pa(a, b + 0, c, d);\n a[b + 16] && pa(a, b + 16, c, d + 4);\n a[b + 32] && pa(a, b + 32, c, d + 128);\n a[b + 48] && pa(a, b + 48, c, d + 128 + 4);\n }\n function Oe(a, b, c, d) {\n var e = V(16),\n f;\n for (f = 0; 4 > f; ++f) {\n var g = a[b + 0 + f] + a[b + 12 + f];\n var h = a[b + 4 + f] + a[b + 8 + f];\n var k = a[b + 4 + f] - a[b + 8 + f];\n var l = a[b + 0 + f] - a[b + 12 + f];\n e[0 + f] = g + h;\n e[8 + f] = g - h;\n e[4 + f] = l + k;\n e[12 + f] = l - k;\n }\n for (f = 0; 4 > f; ++f)\n (a = e[0 + 4 * f] + 3),\n (g = a + e[3 + 4 * f]),\n (h = e[1 + 4 * f] + e[2 + 4 * f]),\n (k = e[1 + 4 * f] - e[2 + 4 * f]),\n (l = a - e[3 + 4 * f]),\n (c[d + 0] = (g + h) >> 3),\n (c[d + 16] = (l + k) >> 3),\n (c[d + 32] = (g - h) >> 3),\n (c[d + 48] = (l - k) >> 3),\n (d += 64);\n }\n function Pb(a, b, c) {\n var d = b - 32,\n e = R,\n f = 255 - a[d - 1],\n g;\n for (g = 0; g < c; ++g) {\n var h = e,\n k = f + a[b - 1],\n l;\n for (l = 0; l < c; ++l) a[b + l] = h[k + a[d + l]];\n b += 32;\n }\n }\n function ef(a, b) {\n Pb(a, b, 4);\n }\n function wf(a, b) {\n Pb(a, b, 8);\n }\n function pf(a, b) {\n Pb(a, b, 16);\n }\n function qf(a, b) {\n var c;\n for (c = 0; 16 > c; ++c) I(a, b + 32 * c, a, b - 32, 16);\n }\n function rf(a, b) {\n var c;\n for (c = 16; 0 < c; --c) M(a, b, a[b - 1], 16), (b += 32);\n }\n function $a(a, b, c) {\n var d;\n for (d = 0; 16 > d; ++d) M(b, c + 32 * d, a, 16);\n }\n function of(a, b) {\n var c = 16,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d] + a[b + d - 32];\n $a(c >> 5, a, b);\n }\n function sf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d];\n $a(c >> 4, a, b);\n }\n function tf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b + d - 32];\n $a(c >> 4, a, b);\n }\n function uf(a, b) {\n $a(128, a, b);\n }\n function z(a, b, c) {\n return (a + 2 * b + c + 2) >> 2;\n }\n function ff(a, b) {\n var c = b - 32,\n c = new Uint8Array([\n z(a[c - 1], a[c + 0], a[c + 1]),\n z(a[c + 0], a[c + 1], a[c + 2]),\n z(a[c + 1], a[c + 2], a[c + 3]),\n z(a[c + 2], a[c + 3], a[c + 4])\n ]),\n d;\n for (d = 0; 4 > d; ++d) I(a, b + 32 * d, c, 0, c.length);\n }\n function gf(a, b) {\n var c = a[b - 1],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n ra(a, b + 0, 16843009 * z(a[b - 1 - 32], c, d));\n ra(a, b + 32, 16843009 * z(c, d, e));\n ra(a, b + 64, 16843009 * z(d, e, f));\n ra(a, b + 96, 16843009 * z(e, f, f));\n }\n function df(a, b) {\n var c = 4,\n d;\n for (d = 0; 4 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n c >>= 3;\n for (d = 0; 4 > d; ++d) M(a, b + 32 * d, c, 4);\n }\n function hf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 96] = z(d, e, a[b - 1 + 96]);\n a[b + 1 + 96] = a[b + 0 + 64] = z(c, d, e);\n a[b + 2 + 96] = a[b + 1 + 64] = a[b + 0 + 32] = z(f, c, d);\n a[b + 3 + 96] = a[b + 2 + 64] = a[b + 1 + 32] = a[b + 0 + 0] = z(g, f, c);\n a[b + 3 + 64] = a[b + 2 + 32] = a[b + 1 + 0] = z(h, g, f);\n a[b + 3 + 32] = a[b + 2 + 0] = z(k, h, g);\n a[b + 3 + 0] = z(l, k, h);\n }\n function kf(a, b) {\n var c = a[b + 1 - 32],\n d = a[b + 2 - 32],\n e = a[b + 3 - 32],\n f = a[b + 4 - 32],\n g = a[b + 5 - 32],\n h = a[b + 6 - 32],\n k = a[b + 7 - 32];\n a[b + 0 + 0] = z(a[b + 0 - 32], c, d);\n a[b + 1 + 0] = a[b + 0 + 32] = z(c, d, e);\n a[b + 2 + 0] = a[b + 1 + 32] = a[b + 0 + 64] = z(d, e, f);\n a[b + 3 + 0] = a[b + 2 + 32] = a[b + 1 + 64] = a[b + 0 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 64] = a[b + 1 + 96] = z(f, g, h);\n a[b + 3 + 64] = a[b + 2 + 96] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, k);\n }\n function jf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 0] = a[b + 1 + 64] = (f + g + 1) >> 1;\n a[b + 1 + 0] = a[b + 2 + 64] = (g + h + 1) >> 1;\n a[b + 2 + 0] = a[b + 3 + 64] = (h + k + 1) >> 1;\n a[b + 3 + 0] = (k + l + 1) >> 1;\n a[b + 0 + 96] = z(e, d, c);\n a[b + 0 + 64] = z(d, c, f);\n a[b + 0 + 32] = a[b + 1 + 96] = z(c, f, g);\n a[b + 1 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 2 + 32] = a[b + 3 + 96] = z(g, h, k);\n a[b + 3 + 32] = z(h, k, l);\n }\n function lf(a, b) {\n var c = a[b + 0 - 32],\n d = a[b + 1 - 32],\n e = a[b + 2 - 32],\n f = a[b + 3 - 32],\n g = a[b + 4 - 32],\n h = a[b + 5 - 32],\n k = a[b + 6 - 32],\n l = a[b + 7 - 32];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 1 + 0] = a[b + 0 + 64] = (d + e + 1) >> 1;\n a[b + 2 + 0] = a[b + 1 + 64] = (e + f + 1) >> 1;\n a[b + 3 + 0] = a[b + 2 + 64] = (f + g + 1) >> 1;\n a[b + 0 + 32] = z(c, d, e);\n a[b + 1 + 32] = a[b + 0 + 96] = z(d, e, f);\n a[b + 2 + 32] = a[b + 1 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 3 + 64] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, l);\n }\n function nf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 2 + 0] = a[b + 0 + 32] = (d + e + 1) >> 1;\n a[b + 2 + 32] = a[b + 0 + 64] = (e + f + 1) >> 1;\n a[b + 1 + 0] = z(c, d, e);\n a[b + 3 + 0] = a[b + 1 + 32] = z(d, e, f);\n a[b + 3 + 32] = a[b + 1 + 64] = z(e, f, f);\n a[b + 3 + 64] = a[b + 2 + 64] = a[b + 0 + 96] = a[b + 1 + 96] = a[\n b + 2 + 96\n ] = a[b + 3 + 96] = f;\n }\n function mf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96],\n g = a[b - 1 - 32],\n h = a[b + 0 - 32],\n k = a[b + 1 - 32],\n l = a[b + 2 - 32];\n a[b + 0 + 0] = a[b + 2 + 32] = (c + g + 1) >> 1;\n a[b + 0 + 32] = a[b + 2 + 64] = (d + c + 1) >> 1;\n a[b + 0 + 64] = a[b + 2 + 96] = (e + d + 1) >> 1;\n a[b + 0 + 96] = (f + e + 1) >> 1;\n a[b + 3 + 0] = z(h, k, l);\n a[b + 2 + 0] = z(g, h, k);\n a[b + 1 + 0] = a[b + 3 + 32] = z(c, g, h);\n a[b + 1 + 32] = a[b + 3 + 64] = z(d, c, g);\n a[b + 1 + 64] = a[b + 3 + 96] = z(e, d, c);\n a[b + 1 + 96] = z(f, e, d);\n }\n function xf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) I(a, b + 32 * c, a, b - 32, 8);\n }\n function yf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) M(a, b, a[b - 1], 8), (b += 32);\n }\n function lb(a, b, c) {\n var d;\n for (d = 0; 8 > d; ++d) M(b, c + 32 * d, a, 8);\n }\n function vf(a, b) {\n var c = 8,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n lb(c >> 4, a, b);\n }\n function Af(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32];\n lb(c >> 3, a, b);\n }\n function zf(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b - 1 + 32 * d];\n lb(c >> 3, a, b);\n }\n function Bf(a, b) {\n lb(128, a, b);\n }\n function ab(a, b, c) {\n var d = a[b - c],\n e = a[b + 0],\n f = 3 * (e - d) + Qb[1020 + a[b - 2 * c] - a[b + c]],\n g = mb[112 + ((f + 4) >> 3)];\n a[b - c] = R[255 + d + mb[112 + ((f + 3) >> 3)]];\n a[b + 0] = R[255 + e - g];\n }\n function jd(a, b, c, d) {\n var e = a[b + 0],\n f = a[b + c];\n return U[255 + a[b - 2 * c] - a[b - c]] > d || U[255 + f - e] > d;\n }\n function kd(a, b, c, d) {\n return (\n 4 * U[255 + a[b - c] - a[b + 0]] + U[255 + a[b - 2 * c] - a[b + c]] <= d\n );\n }\n function ld(a, b, c, d, e) {\n var f = a[b - 3 * c],\n g = a[b - 2 * c],\n h = a[b - c],\n k = a[b + 0],\n l = a[b + c],\n m = a[b + 2 * c],\n n = a[b + 3 * c];\n return 4 * U[255 + h - k] + U[255 + g - l] > d\n ? 0\n : U[255 + a[b - 4 * c] - f] <= e &&\n U[255 + f - g] <= e &&\n U[255 + g - h] <= e &&\n U[255 + n - m] <= e &&\n U[255 + m - l] <= e &&\n U[255 + l - k] <= e;\n }\n function gd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d, c, e) && ab(a, b + d, c);\n }\n function hd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d * c, 1, e) && ab(a, b + d * c, 1);\n }\n function bf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4 * c), gd(a, b, c, d);\n }\n function cf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4), hd(a, b, c, d);\n }\n function ea(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - 2 * m],\n r = k[l - m],\n q = k[l + 0],\n t = k[l + m],\n v = k[l + 2 * m],\n p = Qb[1020 + 3 * (q - r) + Qb[1020 + n - t]],\n u = (27 * p + 63) >> 7,\n w = (18 * p + 63) >> 7,\n p = (9 * p + 63) >> 7;\n k[l - 3 * m] = R[255 + k[l - 3 * m] + p];\n k[l - 2 * m] = R[255 + n + w];\n k[l - m] = R[255 + r + u];\n k[l + 0] = R[255 + q - u];\n k[l + m] = R[255 + t - w];\n k[l + 2 * m] = R[255 + v - p];\n }\n b += d;\n }\n }\n function Fa(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - m],\n r = k[l + 0],\n q = k[l + m],\n t = 3 * (r - n),\n v = mb[112 + ((t + 4) >> 3)],\n t = mb[112 + ((t + 3) >> 3)],\n p = (v + 1) >> 1;\n k[l - 2 * m] = R[255 + k[l - 2 * m] + p];\n k[l - m] = R[255 + n + t];\n k[l + 0] = R[255 + r - v];\n k[l + m] = R[255 + q - p];\n }\n b += d;\n }\n }\n function Ue(a, b, c, d, e, f) {\n ea(a, b, c, 1, 16, d, e, f);\n }\n function Ve(a, b, c, d, e, f) {\n ea(a, b, 1, c, 16, d, e, f);\n }\n function Ye(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4 * c), Fa(a, b, c, 1, 16, d, e, f);\n }\n function Ze(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4), Fa(a, b, 1, c, 16, d, e, f);\n }\n function We(a, b, c, d, e, f, g, h) {\n ea(a, b, e, 1, 8, f, g, h);\n ea(c, d, e, 1, 8, f, g, h);\n }\n function Xe(a, b, c, d, e, f, g, h) {\n ea(a, b, 1, e, 8, f, g, h);\n ea(c, d, 1, e, 8, f, g, h);\n }\n function $e(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4 * e, e, 1, 8, f, g, h);\n Fa(c, d + 4 * e, e, 1, 8, f, g, h);\n }\n function af(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4, 1, e, 8, f, g, h);\n Fa(c, d + 4, 1, e, 8, f, g, h);\n }\n function Cf() {\n this.ba = new Cb();\n this.ec = [];\n this.cc = [];\n this.Mc = [];\n this.Dc = this.Nc = this.dc = this.fc = 0;\n this.Oa = new Ud();\n this.memory = 0;\n this.Ib = \"OutputFunc\";\n this.Jb = \"OutputAlphaFunc\";\n this.Nd = \"OutputRowFunc\";\n }\n function md() {\n this.data = [];\n this.offset = this.kd = this.ha = this.w = 0;\n this.na = [];\n this.xa = this.gb = this.Ja = this.Sa = this.P = 0;\n }\n function Df() {\n this.nc = this.Ea = this.b = this.hc = 0;\n this.K = [];\n this.w = 0;\n }\n function Ef() {\n this.ua = 0;\n this.Wa = new ac();\n this.vb = new ac();\n this.md = this.xc = this.wc = 0;\n this.vc = [];\n this.Wb = 0;\n this.Ya = new Ub();\n this.yc = new O();\n }\n function je() {\n this.xb = this.a = 0;\n this.l = new Oa();\n this.ca = new Cb();\n this.V = [];\n this.Ba = 0;\n this.Ta = [];\n this.Ua = 0;\n this.m = new Ra();\n this.Pb = 0;\n this.wd = new Ra();\n this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0;\n this.s = new Ef();\n this.ab = 0;\n this.gc = wa(4, Df);\n this.Oc = 0;\n }\n function Ff() {\n this.Lc = this.Z = this.$a = this.i = this.c = 0;\n this.l = new Oa();\n this.ic = 0;\n this.ca = [];\n this.tb = 0;\n this.qd = null;\n this.rd = 0;\n }\n function Rb(a, b, c, d, e, f, g) {\n a = null == a ? 0 : a[b + 0];\n for (b = 0; b < g; ++b) (e[f + b] = (a + c[d + b]) & 255), (a = e[f + b]);\n }\n function Gf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h;\n for (h = 0; h < g; ++h) e[f + h] = (a[b + h] + c[d + h]) & 255;\n }\n }\n function Hf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h = a[b + 0],\n k = h,\n l = h,\n m;\n for (m = 0; m < g; ++m)\n (h = a[b + m]),\n (k = l + h - k),\n (l = (c[d + m] + (k & -256 ? (0 > k ? 0 : 255) : k)) & 255),\n (k = h),\n (e[f + m] = l);\n }\n }\n function Le(a, b, c, d) {\n var e = b.width,\n f = b.o;\n x(null != a && null != b);\n if (0 > c || 0 >= d || c + d > f) return null;\n if (!a.Cc) {\n if (null == a.ga) {\n a.ga = new Ff();\n var g;\n (g = null == a.ga) ||\n ((g = b.width * b.o),\n x(0 == a.Gb.length),\n (a.Gb = V(g)),\n (a.Uc = 0),\n null == a.Gb\n ? (g = 0)\n : ((a.mb = a.Gb), (a.nb = a.Uc), (a.rc = null), (g = 1)),\n (g = !g));\n if (!g) {\n g = a.ga;\n var h = a.Fa,\n k = a.P,\n l = a.qc,\n m = a.mb,\n n = a.nb,\n r = k + 1,\n q = l - 1,\n t = g.l;\n x(null != h && null != m && null != b);\n ia[0] = null;\n ia[1] = Rb;\n ia[2] = Gf;\n ia[3] = Hf;\n g.ca = m;\n g.tb = n;\n g.c = b.width;\n g.i = b.height;\n x(0 < g.c && 0 < g.i);\n if (1 >= l) b = 0;\n else if (\n ((g.$a = (h[k + 0] >> 0) & 3),\n (g.Z = (h[k + 0] >> 2) & 3),\n (g.Lc = (h[k + 0] >> 4) & 3),\n (k = (h[k + 0] >> 6) & 3),\n 0 > g.$a || 1 < g.$a || 4 <= g.Z || 1 < g.Lc || k)\n )\n b = 0;\n else if (\n ((t.put = kc),\n (t.ac = gc),\n (t.bc = lc),\n (t.ma = g),\n (t.width = b.width),\n (t.height = b.height),\n (t.Da = b.Da),\n (t.v = b.v),\n (t.va = b.va),\n (t.j = b.j),\n (t.o = b.o),\n g.$a)\n )\n b: {\n x(1 == g.$a), (b = Bc());\n c: for (;;) {\n if (null == b) {\n b = 0;\n break b;\n }\n x(null != g);\n g.mc = b;\n b.c = g.c;\n b.i = g.i;\n b.l = g.l;\n b.l.ma = g;\n b.l.width = g.c;\n b.l.height = g.i;\n b.a = 0;\n cb(b.m, h, r, q);\n if (!rb(g.c, g.i, 1, b, null)) break c;\n 1 == b.ab && 3 == b.gc[0].hc && yc(b.s)\n ? ((g.ic = 1),\n (h = b.c * b.i),\n (b.Ta = null),\n (b.Ua = 0),\n (b.V = V(h)),\n (b.Ba = 0),\n null == b.V ? ((b.a = 1), (b = 0)) : (b = 1))\n : ((g.ic = 0), (b = Ec(b, g.c)));\n if (!b) break c;\n b = 1;\n break b;\n }\n g.mc = null;\n b = 0;\n }\n else b = q >= g.c * g.i;\n g = !b;\n }\n if (g) return null;\n 1 != a.ga.Lc ? (a.Ga = 0) : (d = f - c);\n }\n x(null != a.ga);\n x(c + d <= f);\n a: {\n h = a.ga;\n b = h.c;\n f = h.l.o;\n if (0 == h.$a) {\n r = a.rc;\n q = a.Vc;\n t = a.Fa;\n k = a.P + 1 + c * b;\n l = a.mb;\n m = a.nb + c * b;\n x(k <= a.P + a.qc);\n if (0 != h.Z)\n for (x(null != ia[h.Z]), g = 0; g < d; ++g)\n ia[h.Z](r, q, t, k, l, m, b),\n (r = l),\n (q = m),\n (m += b),\n (k += b);\n else\n for (g = 0; g < d; ++g)\n I(l, m, t, k, b), (r = l), (q = m), (m += b), (k += b);\n a.rc = r;\n a.Vc = q;\n } else {\n x(null != h.mc);\n b = c + d;\n g = h.mc;\n x(null != g);\n x(b <= g.i);\n if (g.C >= b) b = 1;\n else if ((h.ic || Aa(), h.ic)) {\n var h = g.V,\n r = g.Ba,\n q = g.c,\n v = g.i,\n t = 1,\n k = g.$ / q,\n l = g.$ % q,\n m = g.m,\n n = g.s,\n p = g.$,\n u = q * v,\n w = q * b,\n y = n.wc,\n A = p < w ? ha(n, l, k) : null;\n x(p <= u);\n x(b <= v);\n x(yc(n));\n c: for (;;) {\n for (; !m.h && p < w; ) {\n l & y || (A = ha(n, l, k));\n x(null != A);\n Sa(m);\n v = ua(A.G[0], A.H[0], m);\n if (256 > v)\n (h[r + p] = v),\n ++p,\n ++l,\n l >= q && ((l = 0), ++k, k <= b && !(k % 16) && Ib(g, k));\n else if (280 > v) {\n var v = ib(v - 256, m);\n var E = ua(A.G[4], A.H[4], m);\n Sa(m);\n E = ib(E, m);\n E = nc(q, E);\n if (p >= E && u - p >= v) {\n var B;\n for (B = 0; B < v; ++B) h[r + p + B] = h[r + p + B - E];\n } else {\n t = 0;\n break c;\n }\n p += v;\n for (l += v; l >= q; )\n (l -= q), ++k, k <= b && !(k % 16) && Ib(g, k);\n p < w && l & y && (A = ha(n, l, k));\n } else {\n t = 0;\n break c;\n }\n x(m.h == db(m));\n }\n Ib(g, k > b ? b : k);\n break c;\n }\n !t || (m.h && p < u) ? ((t = 0), (g.a = m.h ? 5 : 3)) : (g.$ = p);\n b = t;\n } else b = Jb(g, g.V, g.Ba, g.c, g.i, b, se);\n if (!b) {\n d = 0;\n break a;\n }\n }\n c + d >= f && (a.Cc = 1);\n d = 1;\n }\n if (!d) return null;\n if (\n a.Cc &&\n ((d = a.ga), null != d && (d.mc = null), (a.ga = null), 0 < a.Ga)\n )\n return alert(\"todo:WebPDequantizeLevels\"), null;\n }\n return a.nb + c * e;\n }\n function If(a, b, c, d, e, f) {\n for (; 0 < e--; ) {\n var g = a,\n h = b + (c ? 1 : 0),\n k = a,\n l = b + (c ? 0 : 3),\n m;\n for (m = 0; m < d; ++m) {\n var n = k[l + 4 * m];\n 255 != n &&\n ((n *= 32897),\n (g[h + 4 * m + 0] = (g[h + 4 * m + 0] * n) >> 23),\n (g[h + 4 * m + 1] = (g[h + 4 * m + 1] * n) >> 23),\n (g[h + 4 * m + 2] = (g[h + 4 * m + 2] * n) >> 23));\n }\n b += f;\n }\n }\n function Jf(a, b, c, d, e) {\n for (; 0 < d--; ) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + 2 * f + 0],\n h = a[b + 2 * f + 1],\n k = h & 15,\n l = 4369 * k,\n h = (((h & 240) | (h >> 4)) * l) >> 16;\n a[b + 2 * f + 0] =\n (((((g & 240) | (g >> 4)) * l) >> 16) & 240) |\n ((((((g & 15) | (g << 4)) * l) >> 16) >> 4) & 15);\n a[b + 2 * f + 1] = (h & 240) | k;\n }\n b += e;\n }\n }\n function Kf(a, b, c, d, e, f, g, h) {\n var k = 255,\n l,\n m;\n for (m = 0; m < e; ++m) {\n for (l = 0; l < d; ++l) {\n var n = a[b + l];\n f[g + 4 * l] = n;\n k &= n;\n }\n b += c;\n g += h;\n }\n return 255 != k;\n }\n function Lf(a, b, c, d, e) {\n var f;\n for (f = 0; f < e; ++f) c[d + f] = a[b + f] >> 8;\n }\n function Aa() {\n za = If;\n vc = Jf;\n fc = Kf;\n Fc = Lf;\n }\n function va(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n, r, q, t, v, p, u, w, y) {\n var d,\n E = (y - 1) >> 1;\n var B = h[k + 0] | (l[m + 0] << 16);\n var C = n[r + 0] | (q[t + 0] << 16);\n x(null != a);\n var z = (3 * B + C + 131074) >> 2;\n b(a[e + 0], z & 255, z >> 16, v, p);\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + 0], z & 255, z >> 16, u, w));\n for (d = 1; d <= E; ++d) {\n var D = h[k + d] | (l[m + d] << 16);\n var G = n[r + d] | (q[t + d] << 16);\n var F = B + D + C + G + 524296;\n var H = (F + 2 * (D + C)) >> 3;\n F = (F + 2 * (B + G)) >> 3;\n z = (H + B) >> 1;\n B = (F + D) >> 1;\n b(a[e + 2 * d - 1], z & 255, z >> 16, v, p + (2 * d - 1) * c);\n b(a[e + 2 * d - 0], B & 255, B >> 16, v, p + (2 * d - 0) * c);\n null != f &&\n ((z = (F + C) >> 1),\n (B = (H + G) >> 1),\n b(f[g + 2 * d - 1], z & 255, z >> 16, u, w + (2 * d - 1) * c),\n b(f[g + 2 * d + 0], B & 255, B >> 16, u, w + (2 * d + 0) * c));\n B = D;\n C = G;\n }\n y & 1 ||\n ((z = (3 * B + C + 131074) >> 2),\n b(a[e + y - 1], z & 255, z >> 16, v, p + (y - 1) * c),\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + y - 1], z & 255, z >> 16, u, w + (y - 1) * c)));\n };\n }\n function ic() {\n P[Ca] = Mf;\n P[Ua] = nd;\n P[tc] = Nf;\n P[Va] = od;\n P[ya] = pd;\n P[Db] = qd;\n P[wc] = Of;\n P[zb] = nd;\n P[Ab] = od;\n P[Ja] = pd;\n P[Bb] = qd;\n }\n function Sb(a) {\n return a & ~Pf ? (0 > a ? 0 : 255) : a >> rd;\n }\n function bb(a, b) {\n return Sb(((19077 * a) >> 8) + ((26149 * b) >> 8) - 14234);\n }\n function nb(a, b, c) {\n return Sb(\n ((19077 * a) >> 8) - ((6419 * b) >> 8) - ((13320 * c) >> 8) + 8708\n );\n }\n function Pa(a, b) {\n return Sb(((19077 * a) >> 8) + ((33050 * b) >> 8) - 17685);\n }\n function Ga(a, b, c, d, e) {\n d[e + 0] = bb(a, c);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = Pa(a, b);\n }\n function Tb(a, b, c, d, e) {\n d[e + 0] = Pa(a, b);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = bb(a, c);\n }\n function sd(a, b, c, d, e) {\n var f = nb(a, b, c);\n b = ((f << 3) & 224) | (Pa(a, b) >> 3);\n d[e + 0] = (bb(a, c) & 248) | (f >> 5);\n d[e + 1] = b;\n }\n function td(a, b, c, d, e) {\n var f = (Pa(a, b) & 240) | 15;\n d[e + 0] = (bb(a, c) & 240) | (nb(a, b, c) >> 4);\n d[e + 1] = f;\n }\n function ud(a, b, c, d, e) {\n d[e + 0] = 255;\n Ga(a, b, c, d, e + 1);\n }\n function vd(a, b, c, d, e) {\n Tb(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function wd(a, b, c, d, e) {\n Ga(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function la(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n) {\n for (var d = m + (n & -2) * c; m != d; )\n b(a[e + 0], f[g + 0], h[k + 0], l, m),\n b(a[e + 1], f[g + 0], h[k + 0], l, m + c),\n (e += 2),\n ++g,\n ++k,\n (m += 2 * c);\n n & 1 && b(a[e + 0], f[g + 0], h[k + 0], l, m);\n };\n }\n function xd(a, b, c) {\n return 0 == c ? (0 == a ? (0 == b ? 6 : 5) : 0 == b ? 4 : 0) : c;\n }\n function yd(a, b, c, d, e) {\n switch (a >>> 30) {\n case 3:\n Za(b, c, d, e, 0);\n break;\n case 2:\n fd(b, c, d, e);\n break;\n case 1:\n pa(b, c, d, e);\n }\n }\n function Oc(a, b) {\n var c,\n d,\n e = b.M,\n f = b.Nb,\n g = a.oc,\n h = a.pc + 40,\n k = a.oc,\n l = a.pc + 584,\n m = a.oc,\n n = a.pc + 600;\n for (c = 0; 16 > c; ++c) g[h + 32 * c - 1] = 129;\n for (c = 0; 8 > c; ++c)\n (k[l + 32 * c - 1] = 129), (m[n + 32 * c - 1] = 129);\n 0 < e\n ? (g[h - 1 - 32] = k[l - 1 - 32] = m[n - 1 - 32] = 129)\n : (M(g, h - 32 - 1, 127, 21),\n M(k, l - 32 - 1, 127, 9),\n M(m, n - 32 - 1, 127, 9));\n for (d = 0; d < a.za; ++d) {\n var r = b.ya[b.aa + d];\n if (0 < d) {\n for (c = -1; 16 > c; ++c) I(g, h + 32 * c - 4, g, h + 32 * c + 12, 4);\n for (c = -1; 8 > c; ++c)\n I(k, l + 32 * c - 4, k, l + 32 * c + 4, 4),\n I(m, n + 32 * c - 4, m, n + 32 * c + 4, 4);\n }\n var q = a.Gd,\n t = a.Hd + d,\n v = r.ad,\n p = r.Hc;\n 0 < e &&\n (I(g, h - 32, q[t].y, 0, 16),\n I(k, l - 32, q[t].f, 0, 8),\n I(m, n - 32, q[t].ea, 0, 8));\n if (r.Za) {\n var u = g;\n var w = h - 32 + 16;\n 0 < e &&\n (d >= a.za - 1\n ? M(u, w, q[t].y[15], 4)\n : I(u, w, q[t + 1].y, 0, 4));\n for (c = 0; 4 > c; c++)\n u[w + 128 + c] = u[w + 256 + c] = u[w + 384 + c] = u[w + 0 + c];\n for (c = 0; 16 > c; ++c, p <<= 2)\n (u = g), (w = h + zd[c]), W[r.Ob[c]](u, w), yd(p, v, 16 * +c, u, w);\n } else if (((u = xd(d, e, r.Ob[0])), Y[u](g, h), 0 != p))\n for (c = 0; 16 > c; ++c, p <<= 2) yd(p, v, 16 * +c, g, h + zd[c]);\n c = r.Gc;\n u = xd(d, e, r.Dd);\n ka[u](k, l);\n ka[u](m, n);\n r = c >> 0;\n p = v;\n u = k;\n w = l;\n r & 255 && (r & 170 ? Nb(p, 256, u, w) : Ob(p, 256, u, w));\n c >>= 8;\n r = m;\n p = n;\n c & 255 && (c & 170 ? Nb(v, 320, r, p) : Ob(v, 320, r, p));\n e < a.Ub - 1 &&\n (I(q[t].y, 0, g, h + 480, 16),\n I(q[t].f, 0, k, l + 224, 8),\n I(q[t].ea, 0, m, n + 224, 8));\n c = 8 * f * a.B;\n q = a.sa;\n t = a.ta + 16 * d + 16 * f * a.R;\n v = a.qa;\n r = a.ra + 8 * d + c;\n p = a.Ha;\n u = a.Ia + 8 * d + c;\n for (c = 0; 16 > c; ++c) I(q, t + c * a.R, g, h + 32 * c, 16);\n for (c = 0; 8 > c; ++c)\n I(v, r + c * a.B, k, l + 32 * c, 8),\n I(p, u + c * a.B, m, n + 32 * c, 8);\n }\n }\n function Ad(a, b, c, d, e, f, g, h, k) {\n var l = [0],\n m = [0],\n n = 0,\n r = null != k ? k.kd : 0,\n q = null != k ? k : new md();\n if (null == a || 12 > c) return 7;\n q.data = a;\n q.w = b;\n q.ha = c;\n b = [b];\n c = [c];\n q.gb = [q.gb];\n a: {\n var t = b;\n var v = c;\n var p = q.gb;\n x(null != a);\n x(null != v);\n x(null != p);\n p[0] = 0;\n if (12 <= v[0] && !fa(a, t[0], \"RIFF\")) {\n if (fa(a, t[0] + 8, \"WEBP\")) {\n p = 3;\n break a;\n }\n var u = Ha(a, t[0] + 4);\n if (12 > u || 4294967286 < u) {\n p = 3;\n break a;\n }\n if (r && u > v[0] - 8) {\n p = 7;\n break a;\n }\n p[0] = u;\n t[0] += 12;\n v[0] -= 12;\n }\n p = 0;\n }\n if (0 != p) return p;\n u = 0 < q.gb[0];\n for (c = c[0]; ; ) {\n t = [0];\n n = [n];\n a: {\n var w = a;\n v = b;\n p = c;\n var y = n,\n A = l,\n z = m,\n B = t;\n y[0] = 0;\n if (8 > p[0]) p = 7;\n else {\n if (!fa(w, v[0], \"VP8X\")) {\n if (10 != Ha(w, v[0] + 4)) {\n p = 3;\n break a;\n }\n if (18 > p[0]) {\n p = 7;\n break a;\n }\n var C = Ha(w, v[0] + 8);\n var D = 1 + Yb(w, v[0] + 12);\n w = 1 + Yb(w, v[0] + 15);\n if (2147483648 <= D * w) {\n p = 3;\n break a;\n }\n null != B && (B[0] = C);\n null != A && (A[0] = D);\n null != z && (z[0] = w);\n v[0] += 18;\n p[0] -= 18;\n y[0] = 1;\n }\n p = 0;\n }\n }\n n = n[0];\n t = t[0];\n if (0 != p) return p;\n v = !!(t & 2);\n if (!u && n) return 3;\n null != f && (f[0] = !!(t & 16));\n null != g && (g[0] = v);\n null != h && (h[0] = 0);\n g = l[0];\n t = m[0];\n if (n && v && null == k) {\n p = 0;\n break;\n }\n if (4 > c) {\n p = 7;\n break;\n }\n if ((u && n) || (!u && !n && !fa(a, b[0], \"ALPH\"))) {\n c = [c];\n q.na = [q.na];\n q.P = [q.P];\n q.Sa = [q.Sa];\n a: {\n C = a;\n p = b;\n u = c;\n var y = q.gb,\n A = q.na,\n z = q.P,\n B = q.Sa;\n D = 22;\n x(null != C);\n x(null != u);\n w = p[0];\n var F = u[0];\n x(null != A);\n x(null != B);\n A[0] = null;\n z[0] = null;\n for (B[0] = 0; ; ) {\n p[0] = w;\n u[0] = F;\n if (8 > F) {\n p = 7;\n break a;\n }\n var G = Ha(C, w + 4);\n if (4294967286 < G) {\n p = 3;\n break a;\n }\n var H = (8 + G + 1) & -2;\n D += H;\n if (0 < y && D > y) {\n p = 3;\n break a;\n }\n if (!fa(C, w, \"VP8 \") || !fa(C, w, \"VP8L\")) {\n p = 0;\n break a;\n }\n if (F[0] < H) {\n p = 7;\n break a;\n }\n fa(C, w, \"ALPH\") || ((A[0] = C), (z[0] = w + 8), (B[0] = G));\n w += H;\n F -= H;\n }\n }\n c = c[0];\n q.na = q.na[0];\n q.P = q.P[0];\n q.Sa = q.Sa[0];\n if (0 != p) break;\n }\n c = [c];\n q.Ja = [q.Ja];\n q.xa = [q.xa];\n a: if (\n ((y = a),\n (p = b),\n (u = c),\n (A = q.gb[0]),\n (z = q.Ja),\n (B = q.xa),\n (C = p[0]),\n (w = !fa(y, C, \"VP8 \")),\n (D = !fa(y, C, \"VP8L\")),\n x(null != y),\n x(null != u),\n x(null != z),\n x(null != B),\n 8 > u[0])\n )\n p = 7;\n else {\n if (w || D) {\n y = Ha(y, C + 4);\n if (12 <= A && y > A - 12) {\n p = 3;\n break a;\n }\n if (r && y > u[0] - 8) {\n p = 7;\n break a;\n }\n z[0] = y;\n p[0] += 8;\n u[0] -= 8;\n B[0] = D;\n } else\n (B[0] = 5 <= u[0] && 47 == y[C + 0] && !(y[C + 4] >> 5)),\n (z[0] = u[0]);\n p = 0;\n }\n c = c[0];\n q.Ja = q.Ja[0];\n q.xa = q.xa[0];\n b = b[0];\n if (0 != p) break;\n if (4294967286 < q.Ja) return 3;\n null == h || v || (h[0] = q.xa ? 2 : 1);\n g = [g];\n t = [t];\n if (q.xa) {\n if (5 > c) {\n p = 7;\n break;\n }\n h = g;\n r = t;\n v = f;\n null == a || 5 > c\n ? (a = 0)\n : 5 <= c && 47 == a[b + 0] && !(a[b + 4] >> 5)\n ? ((u = [0]),\n (y = [0]),\n (A = [0]),\n (z = new Ra()),\n cb(z, a, b, c),\n mc(z, u, y, A)\n ? (null != h && (h[0] = u[0]),\n null != r && (r[0] = y[0]),\n null != v && (v[0] = A[0]),\n (a = 1))\n : (a = 0))\n : (a = 0);\n } else {\n if (10 > c) {\n p = 7;\n break;\n }\n h = t;\n null == a || 10 > c || !Jc(a, b + 3, c - 3)\n ? (a = 0)\n : ((r = a[b + 0] | (a[b + 1] << 8) | (a[b + 2] << 16)),\n (v = ((a[b + 7] << 8) | a[b + 6]) & 16383),\n (a = ((a[b + 9] << 8) | a[b + 8]) & 16383),\n r & 1 ||\n 3 < ((r >> 1) & 7) ||\n !((r >> 4) & 1) ||\n r >> 5 >= q.Ja ||\n !v ||\n !a\n ? (a = 0)\n : (g && (g[0] = v), h && (h[0] = a), (a = 1)));\n }\n if (!a) return 3;\n g = g[0];\n t = t[0];\n if (n && (l[0] != g || m[0] != t)) return 3;\n null != k &&\n ((k[0] = q),\n (k.offset = b - k.w),\n x(4294967286 > b - k.w),\n x(k.offset == k.ha - c));\n break;\n }\n return 0 == p || (7 == p && n && null == k)\n ? (null != f && (f[0] |= null != q.na && 0 < q.na.length),\n null != d && (d[0] = g),\n null != e && (e[0] = t),\n 0)\n : p;\n }\n function hc(a, b, c) {\n var d = b.width,\n e = b.height,\n f = 0,\n g = 0,\n h = d,\n k = e;\n b.Da = null != a && 0 < a.Da;\n if (\n b.Da &&\n ((h = a.cd),\n (k = a.bd),\n (f = a.v),\n (g = a.j),\n 11 > c || ((f &= -2), (g &= -2)),\n 0 > f || 0 > g || 0 >= h || 0 >= k || f + h > d || g + k > e)\n )\n return 0;\n b.v = f;\n b.j = g;\n b.va = f + h;\n b.o = g + k;\n b.U = h;\n b.T = k;\n b.da = null != a && 0 < a.da;\n if (b.da) {\n c = [a.ib];\n f = [a.hb];\n if (!bc(h, k, c, f)) return 0;\n b.ib = c[0];\n b.hb = f[0];\n }\n b.ob = null != a && a.ob;\n b.Kb = null == a || !a.Sd;\n b.da && ((b.ob = b.ib < (3 * d) / 4 && b.hb < (3 * e) / 4), (b.Kb = 0));\n return 1;\n }\n function Bd(a) {\n if (null == a) return 2;\n if (11 > a.S) {\n var b = a.f.RGBA;\n b.fb += (a.height - 1) * b.A;\n b.A = -b.A;\n } else\n (b = a.f.kb),\n (a = a.height),\n (b.O += (a - 1) * b.fa),\n (b.fa = -b.fa),\n (b.N += ((a - 1) >> 1) * b.Ab),\n (b.Ab = -b.Ab),\n (b.W += ((a - 1) >> 1) * b.Db),\n (b.Db = -b.Db),\n null != b.F && ((b.J += (a - 1) * b.lb), (b.lb = -b.lb));\n return 0;\n }\n function Cd(a, b, c, d) {\n if (null == d || 0 >= a || 0 >= b) return 2;\n if (null != c) {\n if (c.Da) {\n var e = c.cd,\n f = c.bd,\n g = c.v & -2,\n h = c.j & -2;\n if (0 > g || 0 > h || 0 >= e || 0 >= f || g + e > a || h + f > b)\n return 2;\n a = e;\n b = f;\n }\n if (c.da) {\n e = [c.ib];\n f = [c.hb];\n if (!bc(a, b, e, f)) return 2;\n a = e[0];\n b = f[0];\n }\n }\n d.width = a;\n d.height = b;\n a: {\n var k = d.width;\n var l = d.height;\n a = d.S;\n if (0 >= k || 0 >= l || !(a >= Ca && 13 > a)) a = 2;\n else {\n if (0 >= d.Rd && null == d.sd) {\n var g = (f = e = b = 0),\n h = k * Dd[a],\n m = h * l;\n 11 > a ||\n ((b = (k + 1) / 2),\n (f = ((l + 1) / 2) * b),\n 12 == a && ((e = k), (g = e * l)));\n l = V(m + 2 * f + g);\n if (null == l) {\n a = 1;\n break a;\n }\n d.sd = l;\n 11 > a\n ? ((k = d.f.RGBA),\n (k.eb = l),\n (k.fb = 0),\n (k.A = h),\n (k.size = m))\n : ((k = d.f.kb),\n (k.y = l),\n (k.O = 0),\n (k.fa = h),\n (k.Fd = m),\n (k.f = l),\n (k.N = 0 + m),\n (k.Ab = b),\n (k.Cd = f),\n (k.ea = l),\n (k.W = 0 + m + f),\n (k.Db = b),\n (k.Ed = f),\n 12 == a && ((k.F = l), (k.J = 0 + m + 2 * f)),\n (k.Tc = g),\n (k.lb = e));\n }\n b = 1;\n e = d.S;\n f = d.width;\n g = d.height;\n if (e >= Ca && 13 > e)\n if (11 > e)\n (a = d.f.RGBA),\n (h = Math.abs(a.A)),\n (b &= h * (g - 1) + f <= a.size),\n (b &= h >= f * Dd[e]),\n (b &= null != a.eb);\n else {\n a = d.f.kb;\n h = (f + 1) / 2;\n m = (g + 1) / 2;\n k = Math.abs(a.fa);\n var l = Math.abs(a.Ab),\n n = Math.abs(a.Db),\n r = Math.abs(a.lb),\n q = r * (g - 1) + f;\n b &= k * (g - 1) + f <= a.Fd;\n b &= l * (m - 1) + h <= a.Cd;\n b &= n * (m - 1) + h <= a.Ed;\n b = b & (k >= f) & (l >= h) & (n >= h);\n b &= null != a.y;\n b &= null != a.f;\n b &= null != a.ea;\n 12 == e && ((b &= r >= f), (b &= q <= a.Tc), (b &= null != a.F));\n }\n else b = 0;\n a = b ? 0 : 2;\n }\n }\n if (0 != a) return a;\n null != c && c.fd && (a = Bd(d));\n return a;\n }\n var xb = 64,\n Hd = [\n 0,\n 1,\n 3,\n 7,\n 15,\n 31,\n 63,\n 127,\n 255,\n 511,\n 1023,\n 2047,\n 4095,\n 8191,\n 16383,\n 32767,\n 65535,\n 131071,\n 262143,\n 524287,\n 1048575,\n 2097151,\n 4194303,\n 8388607,\n 16777215\n ],\n Gd = 24,\n ob = 32,\n Xb = 8,\n Id = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7\n ];\n X(\"Predictor0\", \"PredictorAdd0\");\n self.Predictor0 = function() {\n return 4278190080;\n };\n self.Predictor1 = function(a) {\n return a;\n };\n self.Predictor2 = function(a, b, c) {\n return b[c + 0];\n };\n self.Predictor3 = function(a, b, c) {\n return b[c + 1];\n };\n self.Predictor4 = function(a, b, c) {\n return b[c - 1];\n };\n self.Predictor5 = function(a, b, c) {\n return aa(aa(a, b[c + 1]), b[c + 0]);\n };\n self.Predictor6 = function(a, b, c) {\n return aa(a, b[c - 1]);\n };\n self.Predictor7 = function(a, b, c) {\n return aa(a, b[c + 0]);\n };\n self.Predictor8 = function(a, b, c) {\n return aa(b[c - 1], b[c + 0]);\n };\n self.Predictor9 = function(a, b, c) {\n return aa(b[c + 0], b[c + 1]);\n };\n self.Predictor10 = function(a, b, c) {\n return aa(aa(a, b[c - 1]), aa(b[c + 0], b[c + 1]));\n };\n self.Predictor11 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return 0 >=\n Ia((d >> 24) & 255, (a >> 24) & 255, (b >> 24) & 255) +\n Ia((d >> 16) & 255, (a >> 16) & 255, (b >> 16) & 255) +\n Ia((d >> 8) & 255, (a >> 8) & 255, (b >> 8) & 255) +\n Ia(d & 255, a & 255, b & 255)\n ? d\n : a;\n };\n self.Predictor12 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return (\n ((sa(((a >> 24) & 255) + ((d >> 24) & 255) - ((b >> 24) & 255)) << 24) |\n (sa(((a >> 16) & 255) + ((d >> 16) & 255) - ((b >> 16) & 255)) <<\n 16) |\n (sa(((a >> 8) & 255) + ((d >> 8) & 255) - ((b >> 8) & 255)) << 8) |\n sa((a & 255) + (d & 255) - (b & 255))) >>>\n 0\n );\n };\n self.Predictor13 = function(a, b, c) {\n var d = b[c - 1];\n a = aa(a, b[c + 0]);\n return (\n ((eb((a >> 24) & 255, (d >> 24) & 255) << 24) |\n (eb((a >> 16) & 255, (d >> 16) & 255) << 16) |\n (eb((a >> 8) & 255, (d >> 8) & 255) << 8) |\n eb((a >> 0) & 255, (d >> 0) & 255)) >>>\n 0\n );\n };\n var ee = self.PredictorAdd0;\n self.PredictorAdd1 = cc;\n X(\"Predictor2\", \"PredictorAdd2\");\n X(\"Predictor3\", \"PredictorAdd3\");\n X(\"Predictor4\", \"PredictorAdd4\");\n X(\"Predictor5\", \"PredictorAdd5\");\n X(\"Predictor6\", \"PredictorAdd6\");\n X(\"Predictor7\", \"PredictorAdd7\");\n X(\"Predictor8\", \"PredictorAdd8\");\n X(\"Predictor9\", \"PredictorAdd9\");\n X(\"Predictor10\", \"PredictorAdd10\");\n X(\"Predictor11\", \"PredictorAdd11\");\n X(\"Predictor12\", \"PredictorAdd12\");\n X(\"Predictor13\", \"PredictorAdd13\");\n var fe = self.PredictorAdd2;\n ec(\n \"ColorIndexInverseTransform\",\n \"MapARGB\",\n \"32b\",\n function(a) {\n return (a >> 8) & 255;\n },\n function(a) {\n return a;\n }\n );\n ec(\n \"VP8LColorIndexInverseTransformAlpha\",\n \"MapAlpha\",\n \"8b\",\n function(a) {\n return a;\n },\n function(a) {\n return (a >> 8) & 255;\n }\n );\n var rc = self.ColorIndexInverseTransform,\n ke = self.MapARGB,\n he = self.VP8LColorIndexInverseTransformAlpha,\n le = self.MapAlpha,\n pc,\n qc = (self.VP8LPredictorsAdd = []);\n qc.length = 16;\n (self.VP8LPredictors = []).length = 16;\n (self.VP8LPredictorsAdd_C = []).length = 16;\n (self.VP8LPredictors_C = []).length = 16;\n var Fb,\n sc,\n Gb,\n Hb,\n xc,\n uc,\n bd = V(511),\n cd = V(2041),\n dd = V(225),\n ed = V(767),\n ad = 0,\n Qb = cd,\n mb = dd,\n R = ed,\n U = bd,\n Ca = 0,\n Ua = 1,\n tc = 2,\n Va = 3,\n ya = 4,\n Db = 5,\n wc = 6,\n zb = 7,\n Ab = 8,\n Ja = 9,\n Bb = 10,\n pe = [2, 3, 7],\n oe = [3, 3, 11],\n Dc = [280, 256, 256, 256, 40],\n qe = [0, 1, 1, 1, 0],\n ne = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n de = [\n 24,\n 7,\n 23,\n 25,\n 40,\n 6,\n 39,\n 41,\n 22,\n 26,\n 38,\n 42,\n 56,\n 5,\n 55,\n 57,\n 21,\n 27,\n 54,\n 58,\n 37,\n 43,\n 72,\n 4,\n 71,\n 73,\n 20,\n 28,\n 53,\n 59,\n 70,\n 74,\n 36,\n 44,\n 88,\n 69,\n 75,\n 52,\n 60,\n 3,\n 87,\n 89,\n 19,\n 29,\n 86,\n 90,\n 35,\n 45,\n 68,\n 76,\n 85,\n 91,\n 51,\n 61,\n 104,\n 2,\n 103,\n 105,\n 18,\n 30,\n 102,\n 106,\n 34,\n 46,\n 84,\n 92,\n 67,\n 77,\n 101,\n 107,\n 50,\n 62,\n 120,\n 1,\n 119,\n 121,\n 83,\n 93,\n 17,\n 31,\n 100,\n 108,\n 66,\n 78,\n 118,\n 122,\n 33,\n 47,\n 117,\n 123,\n 49,\n 63,\n 99,\n 109,\n 82,\n 94,\n 0,\n 116,\n 124,\n 65,\n 79,\n 16,\n 32,\n 98,\n 110,\n 48,\n 115,\n 125,\n 81,\n 95,\n 64,\n 114,\n 126,\n 97,\n 111,\n 80,\n 113,\n 127,\n 96,\n 112\n ],\n me = [\n 2954,\n 2956,\n 2958,\n 2962,\n 2970,\n 2986,\n 3018,\n 3082,\n 3212,\n 3468,\n 3980,\n 5004\n ],\n ie = 8,\n Lb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 17,\n 18,\n 19,\n 20,\n 20,\n 21,\n 21,\n 22,\n 22,\n 23,\n 23,\n 24,\n 25,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 59,\n 60,\n 61,\n 62,\n 63,\n 64,\n 65,\n 66,\n 67,\n 68,\n 69,\n 70,\n 71,\n 72,\n 73,\n 74,\n 75,\n 76,\n 76,\n 77,\n 78,\n 79,\n 80,\n 81,\n 82,\n 83,\n 84,\n 85,\n 86,\n 87,\n 88,\n 89,\n 91,\n 93,\n 95,\n 96,\n 98,\n 100,\n 101,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 118,\n 122,\n 124,\n 126,\n 128,\n 130,\n 132,\n 134,\n 136,\n 138,\n 140,\n 143,\n 145,\n 148,\n 151,\n 154,\n 157\n ],\n Mb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 60,\n 62,\n 64,\n 66,\n 68,\n 70,\n 72,\n 74,\n 76,\n 78,\n 80,\n 82,\n 84,\n 86,\n 88,\n 90,\n 92,\n 94,\n 96,\n 98,\n 100,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 119,\n 122,\n 125,\n 128,\n 131,\n 134,\n 137,\n 140,\n 143,\n 146,\n 149,\n 152,\n 155,\n 158,\n 161,\n 164,\n 167,\n 170,\n 173,\n 177,\n 181,\n 185,\n 189,\n 193,\n 197,\n 201,\n 205,\n 209,\n 213,\n 217,\n 221,\n 225,\n 229,\n 234,\n 239,\n 245,\n 249,\n 254,\n 259,\n 264,\n 269,\n 274,\n 279,\n 284\n ],\n oa = null,\n He = [\n [173, 148, 140, 0],\n [176, 155, 140, 135, 0],\n [180, 157, 141, 134, 130, 0],\n [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]\n ],\n Ie = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15],\n Mc = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9],\n Fe = [\n [\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128],\n [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128],\n [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]\n ],\n [\n [1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128],\n [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128],\n [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]\n ],\n [\n [1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128],\n [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128],\n [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]\n ],\n [\n [1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128],\n [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128],\n [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]\n ],\n [\n [1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128],\n [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128],\n [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]\n ],\n [\n [1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128],\n [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128],\n [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62],\n [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1],\n [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]\n ],\n [\n [1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128],\n [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128],\n [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]\n ],\n [\n [1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128],\n [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128],\n [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]\n ],\n [\n [1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128],\n [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128],\n [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]\n ],\n [\n [1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128],\n [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128],\n [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]\n ],\n [\n [1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128],\n [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128],\n [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]\n ],\n [\n [1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128],\n [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128],\n [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]\n ],\n [\n [1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128],\n [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128],\n [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128],\n [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]\n ],\n [\n [1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128],\n [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128],\n [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]\n ],\n [\n [1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128],\n [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128],\n [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]\n ],\n [\n [1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128],\n [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128],\n [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128],\n [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128],\n [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128],\n [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255],\n [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128],\n [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]\n ],\n [\n [1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128],\n [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128],\n [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]\n ],\n [\n [1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128],\n [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128],\n [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]\n ],\n [\n [1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128],\n [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128],\n [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]\n ],\n [\n [1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128],\n [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128],\n [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]\n ],\n [\n [1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128],\n [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128],\n [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]\n ],\n [\n [1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128],\n [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128],\n [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ]\n ],\n Ke = [\n [\n [231, 120, 48, 89, 115, 113, 120, 152, 112],\n [152, 179, 64, 126, 170, 118, 46, 70, 95],\n [175, 69, 143, 80, 85, 82, 72, 155, 103],\n [56, 58, 10, 171, 218, 189, 17, 13, 152],\n [114, 26, 17, 163, 44, 195, 21, 10, 173],\n [121, 24, 80, 195, 26, 62, 44, 64, 85],\n [144, 71, 10, 38, 171, 213, 144, 34, 26],\n [170, 46, 55, 19, 136, 160, 33, 206, 71],\n [63, 20, 8, 114, 114, 208, 12, 9, 226],\n [81, 40, 11, 96, 182, 84, 29, 16, 36]\n ],\n [\n [134, 183, 89, 137, 98, 101, 106, 165, 148],\n [72, 187, 100, 130, 157, 111, 32, 75, 80],\n [66, 102, 167, 99, 74, 62, 40, 234, 128],\n [41, 53, 9, 178, 241, 141, 26, 8, 107],\n [74, 43, 26, 146, 73, 166, 49, 23, 157],\n [65, 38, 105, 160, 51, 52, 31, 115, 128],\n [104, 79, 12, 27, 217, 255, 87, 17, 7],\n [87, 68, 71, 44, 114, 51, 15, 186, 23],\n [47, 41, 14, 110, 182, 183, 21, 17, 194],\n [66, 45, 25, 102, 197, 189, 23, 18, 22]\n ],\n [\n [88, 88, 147, 150, 42, 46, 45, 196, 205],\n [43, 97, 183, 117, 85, 38, 35, 179, 61],\n [39, 53, 200, 87, 26, 21, 43, 232, 171],\n [56, 34, 51, 104, 114, 102, 29, 93, 77],\n [39, 28, 85, 171, 58, 165, 90, 98, 64],\n [34, 22, 116, 206, 23, 34, 43, 166, 73],\n [107, 54, 32, 26, 51, 1, 81, 43, 31],\n [68, 25, 106, 22, 64, 171, 36, 225, 114],\n [34, 19, 21, 102, 132, 188, 16, 76, 124],\n [62, 18, 78, 95, 85, 57, 50, 48, 51]\n ],\n [\n [193, 101, 35, 159, 215, 111, 89, 46, 111],\n [60, 148, 31, 172, 219, 228, 21, 18, 111],\n [112, 113, 77, 85, 179, 255, 38, 120, 114],\n [40, 42, 1, 196, 245, 209, 10, 25, 109],\n [88, 43, 29, 140, 166, 213, 37, 43, 154],\n [61, 63, 30, 155, 67, 45, 68, 1, 209],\n [100, 80, 8, 43, 154, 1, 51, 26, 71],\n [142, 78, 78, 16, 255, 128, 34, 197, 171],\n [41, 40, 5, 102, 211, 183, 4, 1, 221],\n [51, 50, 17, 168, 209, 192, 23, 25, 82]\n ],\n [\n [138, 31, 36, 171, 27, 166, 38, 44, 229],\n [67, 87, 58, 169, 82, 115, 26, 59, 179],\n [63, 59, 90, 180, 59, 166, 93, 73, 154],\n [40, 40, 21, 116, 143, 209, 34, 39, 175],\n [47, 15, 16, 183, 34, 223, 49, 45, 183],\n [46, 17, 33, 183, 6, 98, 15, 32, 183],\n [57, 46, 22, 24, 128, 1, 54, 17, 37],\n [65, 32, 73, 115, 28, 128, 23, 128, 205],\n [40, 3, 9, 115, 51, 192, 18, 6, 223],\n [87, 37, 9, 115, 59, 77, 64, 21, 47]\n ],\n [\n [104, 55, 44, 218, 9, 54, 53, 130, 226],\n [64, 90, 70, 205, 40, 41, 23, 26, 57],\n [54, 57, 112, 184, 5, 41, 38, 166, 213],\n [30, 34, 26, 133, 152, 116, 10, 32, 134],\n [39, 19, 53, 221, 26, 114, 32, 73, 255],\n [31, 9, 65, 234, 2, 15, 1, 118, 73],\n [75, 32, 12, 51, 192, 255, 160, 43, 51],\n [88, 31, 35, 67, 102, 85, 55, 186, 85],\n [56, 21, 23, 111, 59, 205, 45, 37, 192],\n [55, 38, 70, 124, 73, 102, 1, 34, 98]\n ],\n [\n [125, 98, 42, 88, 104, 85, 117, 175, 82],\n [95, 84, 53, 89, 128, 100, 113, 101, 45],\n [75, 79, 123, 47, 51, 128, 81, 171, 1],\n [57, 17, 5, 71, 102, 57, 53, 41, 49],\n [38, 33, 13, 121, 57, 73, 26, 1, 85],\n [41, 10, 67, 138, 77, 110, 90, 47, 114],\n [115, 21, 2, 10, 102, 255, 166, 23, 6],\n [101, 29, 16, 10, 85, 128, 101, 196, 26],\n [57, 18, 10, 102, 102, 213, 34, 20, 43],\n [117, 20, 15, 36, 163, 128, 68, 1, 26]\n ],\n [\n [102, 61, 71, 37, 34, 53, 31, 243, 192],\n [69, 60, 71, 38, 73, 119, 28, 222, 37],\n [68, 45, 128, 34, 1, 47, 11, 245, 171],\n [62, 17, 19, 70, 146, 85, 55, 62, 70],\n [37, 43, 37, 154, 100, 163, 85, 160, 1],\n [63, 9, 92, 136, 28, 64, 32, 201, 85],\n [75, 15, 9, 9, 64, 255, 184, 119, 16],\n [86, 6, 28, 5, 64, 255, 25, 248, 1],\n [56, 8, 17, 132, 137, 255, 55, 116, 128],\n [58, 15, 20, 82, 135, 57, 26, 121, 40]\n ],\n [\n [164, 50, 31, 137, 154, 133, 25, 35, 218],\n [51, 103, 44, 131, 131, 123, 31, 6, 158],\n [86, 40, 64, 135, 148, 224, 45, 183, 128],\n [22, 26, 17, 131, 240, 154, 14, 1, 209],\n [45, 16, 21, 91, 64, 222, 7, 1, 197],\n [56, 21, 39, 155, 60, 138, 23, 102, 213],\n [83, 12, 13, 54, 192, 255, 68, 47, 28],\n [85, 26, 85, 85, 128, 128, 32, 146, 171],\n [18, 11, 7, 63, 144, 171, 4, 4, 246],\n [35, 27, 10, 146, 174, 171, 12, 26, 128]\n ],\n [\n [190, 80, 35, 99, 180, 80, 126, 54, 45],\n [85, 126, 47, 87, 176, 51, 41, 20, 32],\n [101, 75, 128, 139, 118, 146, 116, 128, 85],\n [56, 41, 15, 176, 236, 85, 37, 9, 62],\n [71, 30, 17, 119, 118, 255, 17, 18, 138],\n [101, 38, 60, 138, 55, 70, 43, 26, 142],\n [146, 36, 19, 30, 171, 255, 97, 27, 20],\n [138, 45, 61, 62, 219, 1, 81, 188, 64],\n [32, 41, 20, 117, 151, 142, 20, 21, 163],\n [112, 19, 12, 61, 195, 128, 48, 4, 24]\n ]\n ],\n Ee = [\n [\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255],\n [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255],\n [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255],\n [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ]\n ],\n Ge = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0],\n Nc,\n Y = [],\n W = [],\n ka = [],\n Za,\n fd,\n Nb,\n pa,\n Ob,\n Xc,\n Tc,\n Yc,\n Uc,\n Zc,\n Vc,\n $c,\n Wc,\n Rc,\n Pc,\n Sc,\n Qc,\n re = 1,\n Cc = 2,\n ia = [],\n za,\n vc,\n fc,\n Fc,\n P = [];\n va(\"UpsampleRgbLinePair\", Ga, 3);\n va(\"UpsampleBgrLinePair\", Tb, 3);\n va(\"UpsampleRgbaLinePair\", wd, 4);\n va(\"UpsampleBgraLinePair\", vd, 4);\n va(\"UpsampleArgbLinePair\", ud, 4);\n va(\"UpsampleRgba4444LinePair\", td, 2);\n va(\"UpsampleRgb565LinePair\", sd, 2);\n var Mf = self.UpsampleRgbLinePair,\n Nf = self.UpsampleBgrLinePair,\n nd = self.UpsampleRgbaLinePair,\n od = self.UpsampleBgraLinePair,\n pd = self.UpsampleArgbLinePair,\n qd = self.UpsampleRgba4444LinePair,\n Of = self.UpsampleRgb565LinePair,\n Wa = 16,\n Ba = 1 << (Wa - 1),\n ta = -227,\n Eb = 482,\n rd = 6,\n Pf = (256 << rd) - 1,\n jc = 0,\n Yd = V(256),\n ae = V(256),\n $d = V(256),\n Zd = V(256),\n be = V(Eb - ta),\n ce = V(Eb - ta);\n la(\"YuvToRgbRow\", Ga, 3);\n la(\"YuvToBgrRow\", Tb, 3);\n la(\"YuvToRgbaRow\", wd, 4);\n la(\"YuvToBgraRow\", vd, 4);\n la(\"YuvToArgbRow\", ud, 4);\n la(\"YuvToRgba4444Row\", td, 2);\n la(\"YuvToRgb565Row\", sd, 2);\n var zd = [\n 0,\n 4,\n 8,\n 12,\n 128,\n 132,\n 136,\n 140,\n 256,\n 260,\n 264,\n 268,\n 384,\n 388,\n 392,\n 396\n ],\n Ya = [0, 2, 8],\n Qf = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1],\n Ne = 1;\n this.WebPDecodeRGBA = function(a, b, c, d, e) {\n var f = Ua;\n var g = new Cf(),\n h = new Cb();\n g.ba = h;\n h.S = f;\n h.width = [h.width];\n h.height = [h.height];\n var k = h.width;\n var l = h.height,\n m = new Td();\n if (null == m || null == a) var n = 2;\n else\n x(null != m),\n (n = Ad(a, b, c, m.width, m.height, m.Pd, m.Qd, m.format, null));\n 0 != n\n ? (k = 0)\n : (null != k && (k[0] = m.width[0]),\n null != l && (l[0] = m.height[0]),\n (k = 1));\n if (k) {\n h.width = h.width[0];\n h.height = h.height[0];\n null != d && (d[0] = h.width);\n null != e && (e[0] = h.height);\n b: {\n d = new Oa();\n e = new md();\n e.data = a;\n e.w = b;\n e.ha = c;\n e.kd = 1;\n b = [0];\n x(null != e);\n a = Ad(e.data, e.w, e.ha, null, null, null, b, null, e);\n (0 == a || 7 == a) && b[0] && (a = 4);\n b = a;\n if (0 == b) {\n x(null != g);\n d.data = e.data;\n d.w = e.w + e.offset;\n d.ha = e.ha - e.offset;\n d.put = kc;\n d.ac = gc;\n d.bc = lc;\n d.ma = g;\n if (e.xa) {\n a = Bc();\n if (null == a) {\n g = 1;\n break b;\n }\n if (te(a, d)) {\n b = Cd(d.width, d.height, g.Oa, g.ba);\n if ((d = 0 == b)) {\n c: {\n d = a;\n d: for (;;) {\n if (null == d) {\n d = 0;\n break c;\n }\n x(null != d.s.yc);\n x(null != d.s.Ya);\n x(0 < d.s.Wb);\n c = d.l;\n x(null != c);\n e = c.ma;\n x(null != e);\n if (0 != d.xb) {\n d.ca = e.ba;\n d.tb = e.tb;\n x(null != d.ca);\n if (!hc(e.Oa, c, Va)) {\n d.a = 2;\n break d;\n }\n if (!Ec(d, c.width)) break d;\n if (c.da) break d;\n (c.da || hb(d.ca.S)) && Aa();\n 11 > d.ca.S ||\n (alert(\"todo:WebPInitConvertARGBToYUV\"),\n null != d.ca.f.kb.F && Aa());\n if (\n d.Pb &&\n 0 < d.s.ua &&\n null == d.s.vb.X &&\n !Zb(d.s.vb, d.s.Wa.Xa)\n ) {\n d.a = 1;\n break d;\n }\n d.xb = 0;\n }\n if (!Jb(d, d.V, d.Ba, d.c, d.i, c.o, ge)) break d;\n e.Dc = d.Ma;\n d = 1;\n break c;\n }\n x(0 != d.a);\n d = 0;\n }\n d = !d;\n }\n d && (b = a.a);\n } else b = a.a;\n } else {\n a = new Ce();\n if (null == a) {\n g = 1;\n break b;\n }\n a.Fa = e.na;\n a.P = e.P;\n a.qc = e.Sa;\n if (Kc(a, d)) {\n if (((b = Cd(d.width, d.height, g.Oa, g.ba)), 0 == b)) {\n a.Aa = 0;\n c = g.Oa;\n e = a;\n x(null != e);\n if (null != c) {\n k = c.Md;\n k = 0 > k ? 0 : 100 < k ? 255 : (255 * k) / 100;\n if (0 < k) {\n for (l = m = 0; 4 > l; ++l)\n (n = e.pb[l]),\n 12 > n.lc &&\n (n.ia = (k * Qf[0 > n.lc ? 0 : n.lc]) >> 3),\n (m |= n.ia);\n m && (alert(\"todo:VP8InitRandom\"), (e.ia = 1));\n }\n e.Ga = c.Id;\n 100 < e.Ga ? (e.Ga = 100) : 0 > e.Ga && (e.Ga = 0);\n }\n Me(a, d) || (b = a.a);\n }\n } else b = a.a;\n }\n 0 == b && null != g.Oa && g.Oa.fd && (b = Bd(g.ba));\n }\n g = b;\n }\n f = 0 != g ? null : 11 > f ? h.f.RGBA.eb : h.f.kb.y;\n } else f = null;\n return f;\n };\n var Dd = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];\n };\n new _WebPDecoder();\n\n /** @license\n * Copyright (c) 2017 Dominik Homberger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nhttps://webpjs.appspot.com\nWebPRiffParser dominikhlbg@gmail.com\n*/\n\n function memcmp(data, data_off, str, size) {\n for (var i = 0; i < size; i++)\n if (data[data_off + i] != str.charCodeAt(i)) return true;\n return false;\n }\n\n function GetTag(data, data_off) {\n var str = \"\";\n for (var i = 0; i < 4; i++) str += String.fromCharCode(data[data_off++]);\n return str;\n }\n\n function GetLE16(data, data_off) {\n return (data[data_off + 0] << 0) | (data[data_off + 1] << 8);\n }\n\n function GetLE24(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16)) >>>\n 0\n );\n }\n\n function GetLE32(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16) |\n (data[data_off + 3] << 24)) >>>\n 0\n );\n }\n\n function WebPRiffParser(src, src_off) {\n var imagearray = {};\n var i = 0;\n var alpha_chunk = false;\n var alpha_size = 0;\n var alpha_offset = 0;\n imagearray[\"frames\"] = [];\n if (memcmp(src, src_off, \"RIFF\", 4)) return;\n src_off += 4;\n var riff_size = GetLE32(src, src_off) + 8;\n src_off += 8;\n\n while (src_off < src.length) {\n var fourcc = GetTag(src, src_off);\n src_off += 4;\n\n var payload_size = GetLE32(src, src_off);\n src_off += 4;\n var payload_size_padded = payload_size + (payload_size & 1);\n\n switch (fourcc) {\n case \"VP8 \":\n case \"VP8L\":\n if (typeof imagearray[\"frames\"][i] === \"undefined\")\n imagearray[\"frames\"][i] = {};\n var obj = imagearray[\"frames\"][i];\n var height = [0];\n var width = [0];\n obj[\"src_off\"] = alpha_chunk ? alpha_offset : src_off - 8;\n obj[\"src_size\"] = alpha_size + payload_size + 8;\n //var rgba = webpdecoder.WebPDecodeRGBA(src,(alpha_chunk?alpha_offset:src_off-8),alpha_size+payload_size+8,width,height);\n //imagearray[i]={'rgba':rgba,'width':width[0],'height':height[0]};\n i++;\n if (alpha_chunk) {\n alpha_chunk = false;\n alpha_size = 0;\n alpha_offset = 0;\n }\n break;\n case \"VP8X\":\n var obj = (imagearray[\"header\"] = {});\n var feature_flags = (obj[\"feature_flags\"] = src[src_off]);\n var src_off_ = src_off + 4;\n var canvas_width = (obj[\"canvas_width\"] = 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n var canvas_height = (obj[\"canvas_height\"] =\n 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n break;\n case \"ALPH\":\n alpha_chunk = true;\n alpha_size = payload_size_padded + 8;\n alpha_offset = src_off - 8;\n break;\n\n case \"ANIM\":\n var obj = imagearray[\"header\"];\n var bgcolor = (obj[\"bgcolor\"] = GetLE32(src, src_off));\n src_off_ = src_off + 4;\n\n var loop_count = (obj[\"loop_count\"] = GetLE16(src, src_off_));\n src_off_ += 2;\n break;\n case \"ANMF\":\n var offset_x = 0,\n offset_y = 0,\n width = 0,\n height = 0,\n duration = 0,\n blend = 0,\n dispose = 0,\n temp = 0;\n var obj = (imagearray[\"frames\"][i] = {});\n obj[\"offset_x\"] = offset_x = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"offset_y\"] = offset_y = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"width\"] = width = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"height\"] = height = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"duration\"] = duration = GetLE24(src, src_off);\n src_off += 3;\n temp = src[src_off++];\n obj[\"dispose\"] = dispose = temp & 1;\n obj[\"blend\"] = blend = (temp >> 1) & 1;\n break;\n default:\n }\n if (fourcc != \"ANMF\") src_off += payload_size_padded;\n }\n return imagearray;\n }\n\n var height = [0];\n var width = [0];\n var pixels = [];\n var webpdecoder = new _WebPDecoder();\n\n var response = imageData;\n var imagearray = WebPRiffParser(response, 0);\n imagearray[\"response\"] = response;\n imagearray[\"rgbaoutput\"] = true;\n imagearray[\"dataurl\"] = false;\n\n var header = imagearray[\"header\"] ? imagearray[\"header\"] : null;\n var frames = imagearray[\"frames\"] ? imagearray[\"frames\"] : null;\n\n if (header) {\n header[\"loop_counter\"] = header[\"loop_count\"];\n height = [header[\"canvas_height\"]];\n width = [header[\"canvas_width\"]];\n\n var blend = false;\n for (var f = 0; f < frames.length; f++)\n if (frames[f][\"blend\"] == 0) {\n blend = true;\n break;\n }\n }\n\n var frame = frames[0];\n var rgba = webpdecoder.WebPDecodeRGBA(\n response,\n frame[\"src_off\"],\n frame[\"src_size\"],\n width,\n height\n );\n frame[\"rgba\"] = rgba;\n frame[\"imgwidth\"] = width[0];\n frame[\"imgheight\"] = height[0];\n\n for (var i = 0; i < width[0] * height[0] * 4; i++) {\n pixels[i] = rgba[i];\n }\n\n this.width = width;\n this.height = height;\n this.data = pixels;\n return this;\n}\n\nWebPDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { WebPDecoder };\n","/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\nimport { PNG } from \"../libs/png.js\";\n\n/**\n * jsPDF PNG PlugIn\n * @name png_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /*\n * @see http://www.w3.org/TR/PNG-Chunks.html\n *\n Color Allowed Interpretation\n Type Bit Depths\n\n 0 1,2,4,8,16 Each pixel is a grayscale sample.\n\n 2 8,16 Each pixel is an R,G,B triple.\n\n 3 1,2,4,8 Each pixel is a palette index;\n a PLTE chunk must appear.\n\n 4 8,16 Each pixel is a grayscale sample,\n followed by an alpha sample.\n\n 6 8,16 Each pixel is an R,G,B triple,\n followed by an alpha sample.\n */\n\n /*\n * PNG filter method types\n *\n * @see http://www.w3.org/TR/PNG-Filters.html\n * @see http://www.libpng.org/pub/png/book/chapter09.html\n *\n * This is what the value 'Predictor' in decode params relates to\n *\n * 15 is \"optimal prediction\", which means the prediction algorithm can change from line to line.\n * In that case, you actually have to read the first byte off each line for the prediction algorthim (which should be 0-4, corresponding to PDF 10-14) and select the appropriate unprediction algorithm based on that byte.\n *\n 0 None\n 1 Sub\n 2 Up\n 3 Average\n 4 Paeth\n */\n\n var canCompress = function(value) {\n return value !== jsPDFAPI.image_compression.NONE && hasCompressionJS();\n };\n\n var hasCompressionJS = function() {\n return typeof zlibSync === \"function\";\n };\n var compressBytes = function(bytes, lineLength, colorsPerPixel, compression) {\n var level = 4;\n var filter_method = filterUp;\n\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n level = 1;\n filter_method = filterSub;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n level = 6;\n filter_method = filterAverage;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n level = 9;\n filter_method = filterPaeth;\n break;\n }\n\n bytes = applyPngFilterMethod(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n );\n var dat = zlibSync(bytes, { level: level });\n return jsPDFAPI.__addimage__.arrayBufferToBinaryString(dat);\n };\n\n var applyPngFilterMethod = function(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n ) {\n var lines = bytes.length / lineLength,\n result = new Uint8Array(bytes.length + lines),\n filter_methods = getFilterMethods(),\n line,\n prevLine,\n offset;\n\n for (var i = 0; i < lines; i += 1) {\n offset = i * lineLength;\n line = bytes.subarray(offset, offset + lineLength);\n\n if (filter_method) {\n result.set(filter_method(line, colorsPerPixel, prevLine), offset + i);\n } else {\n var len = filter_methods.length,\n results = [];\n\n for (var j; j < len; j += 1) {\n results[j] = filter_methods[j](line, colorsPerPixel, prevLine);\n }\n\n var ind = getIndexOfSmallestSum(results.concat());\n\n result.set(results[ind], offset + i);\n }\n\n prevLine = line;\n }\n\n return result;\n };\n\n var filterNone = function(line) {\n /*var result = new Uint8Array(line.length + 1);\n result[0] = 0;\n result.set(line, 1);*/\n\n var result = Array.apply([], line);\n result.unshift(0);\n\n return result;\n };\n\n var filterSub = function(line, colorsPerPixel) {\n var result = [],\n len = line.length,\n left;\n\n result[0] = 1;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n result[i + 1] = (line[i] - left + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterUp = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n up;\n\n result[0] = 2;\n\n for (var i = 0; i < len; i += 1) {\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] - up + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterAverage = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up;\n\n result[0] = 3;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff;\n }\n\n return result;\n };\n\n var filterPaeth = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up,\n upLeft,\n paeth;\n\n result[0] = 4;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0;\n paeth = paethPredictor(left, up, upLeft);\n result[i + 1] = (line[i] - paeth + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var paethPredictor = function(left, up, upLeft) {\n if (left === up && up === upLeft) {\n return left;\n }\n var pLeft = Math.abs(up - upLeft),\n pUp = Math.abs(left - upLeft),\n pUpLeft = Math.abs(left + up - upLeft - upLeft);\n return pLeft <= pUp && pLeft <= pUpLeft\n ? left\n : pUp <= pUpLeft\n ? up\n : upLeft;\n };\n\n var getFilterMethods = function() {\n return [filterNone, filterSub, filterUp, filterAverage, filterPaeth];\n };\n\n var getIndexOfSmallestSum = function(arrays) {\n var sum = arrays.map(function(value) {\n return value.reduce(function(pv, cv) {\n return pv + Math.abs(cv);\n }, 0);\n });\n return sum.indexOf(Math.min.apply(null, sum));\n };\n\n var getPredictorFromCompression = function(compression) {\n var predictor;\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n predictor = 11;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n predictor = 13;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n predictor = 14;\n break;\n\n default:\n predictor = 12;\n break;\n }\n return predictor;\n };\n\n /**\n * @name processPNG\n * @function\n * @ignore\n */\n jsPDFAPI.processPNG = function(imageData, index, alias, compression) {\n \"use strict\";\n\n var colorSpace,\n filter = this.decode.FLATE_DECODE,\n bitsPerComponent,\n image,\n decodeParameters = \"\",\n trns,\n colors,\n pal,\n smask,\n pixels,\n len,\n alphaData,\n imgData,\n hasColors,\n pixel,\n i,\n n;\n\n if (this.__addimage__.isArrayBuffer(imageData))\n imageData = new Uint8Array(imageData);\n\n if (this.__addimage__.isArrayBufferView(imageData)) {\n image = new PNG(imageData);\n imageData = image.imgData;\n bitsPerComponent = image.bits;\n colorSpace = image.colorSpace;\n colors = image.colors;\n\n /*\n * colorType 6 - Each pixel is an R,G,B triple, followed by an alpha sample.\n *\n * colorType 4 - Each pixel is a grayscale sample, followed by an alpha sample.\n *\n * Extract alpha to create two separate images, using the alpha as a sMask\n */\n if ([4, 6].indexOf(image.colorType) !== -1) {\n /*\n * processes 8 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 8) {\n pixels =\n image.pixelBitlength == 32\n ? new Uint32Array(image.decodePixels().buffer)\n : image.pixelBitlength == 16\n ? new Uint16Array(image.decodePixels().buffer)\n : new Uint8Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(len * image.colors);\n alphaData = new Uint8Array(len);\n var pDiff = image.pixelBitlength - image.bits;\n i = 0;\n n = 0;\n var pbl;\n\n for (; i < len; i++) {\n pixel = pixels[i];\n pbl = 0;\n\n while (pbl < pDiff) {\n imgData[n++] = (pixel >>> pbl) & 0xff;\n pbl = pbl + image.bits;\n }\n\n alphaData[i] = (pixel >>> pbl) & 0xff;\n }\n }\n\n /*\n * processes 16 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 16) {\n pixels = new Uint32Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(\n len * (32 / image.pixelBitlength) * image.colors\n );\n alphaData = new Uint8Array(len * (32 / image.pixelBitlength));\n hasColors = image.colors > 1;\n i = 0;\n n = 0;\n var a = 0;\n\n while (i < len) {\n pixel = pixels[i++];\n\n imgData[n++] = (pixel >>> 0) & 0xff;\n\n if (hasColors) {\n imgData[n++] = (pixel >>> 16) & 0xff;\n\n pixel = pixels[i++];\n imgData[n++] = (pixel >>> 0) & 0xff;\n }\n\n alphaData[a++] = (pixel >>> 16) & 0xff;\n }\n bitsPerComponent = 8;\n }\n\n if (canCompress(compression)) {\n imageData = compressBytes(\n imgData,\n image.width * image.colors,\n image.colors,\n compression\n );\n smask = compressBytes(alphaData, image.width, 1, compression);\n } else {\n imageData = imgData;\n smask = alphaData;\n filter = undefined;\n }\n }\n\n /*\n * Indexed png. Each pixel is a palette index.\n */\n if (image.colorType === 3) {\n colorSpace = this.color_spaces.INDEXED;\n pal = image.palette;\n\n if (image.transparency.indexed) {\n var trans = image.transparency.indexed;\n var total = 0;\n i = 0;\n len = trans.length;\n\n for (; i < len; ++i) {\n total += trans[i];\n }\n\n total = total / 255;\n\n /*\n * a single color is specified as 100% transparent (0),\n * so we set trns to use a /Mask with that index\n */\n if (total === len - 1 && trans.indexOf(0) !== -1) {\n trns = [trans.indexOf(0)];\n\n /*\n * there's more than one colour within the palette that specifies\n * a transparency value less than 255, so we unroll the pixels to create an image sMask\n */\n } else if (total !== len) {\n pixels = image.decodePixels();\n alphaData = new Uint8Array(pixels.length);\n i = 0;\n len = pixels.length;\n\n for (; i < len; i++) {\n alphaData[i] = trans[pixels[i]];\n }\n\n smask = compressBytes(alphaData, image.width, 1);\n }\n }\n }\n\n var predictor = getPredictorFromCompression(compression);\n\n if (filter === this.decode.FLATE_DECODE) {\n decodeParameters = \"/Predictor \" + predictor + \" \";\n }\n decodeParameters +=\n \"/Colors \" +\n colors +\n \" /BitsPerComponent \" +\n bitsPerComponent +\n \" /Columns \" +\n image.width;\n\n if (\n this.__addimage__.isArrayBuffer(imageData) ||\n this.__addimage__.isArrayBufferView(imageData)\n ) {\n imageData = this.__addimage__.arrayBufferToBinaryString(imageData);\n }\n\n if (\n (smask && this.__addimage__.isArrayBuffer(smask)) ||\n this.__addimage__.isArrayBufferView(smask)\n ) {\n smask = this.__addimage__.arrayBufferToBinaryString(smask);\n }\n\n return {\n alias: alias,\n data: imageData,\n index: index,\n filter: filter,\n decodeParameters: decodeParameters,\n transparency: trns,\n palette: pal,\n sMask: smask,\n predictor: predictor,\n width: image.width,\n height: image.height,\n bitsPerComponent: bitsPerComponent,\n colorSpace: colorSpace\n };\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { GifReader } from \"../libs/omggif.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\n\n/**\n * jsPDF Gif Support PlugIn\n *\n * @name gif_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processGIF89A = function(imageData, index, alias, compression) {\n var reader = new GifReader(imageData);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = [];\n\n reader.decodeAndBlitFrameRGBA(0, pixels);\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n\n jsPDFAPI.processGIF87A = jsPDFAPI.processGIF89A;\n})(jsPDF.API);\n","import { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { BmpDecoder } from \"../libs/BMPDecoder.js\";\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF bmp Support PlugIn\n * @name bmp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processBMP = function(imageData, index, alias, compression) {\n var reader = new BmpDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { WebPDecoder } from \"../libs/WebPDecoder.js\";\n\n/**\n * jsPDF webp Support PlugIn\n *\n * @name webp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processWEBP = function(imageData, index, alias, compression) {\n var reader = new WebPDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n *\n * Copyright (c) 2021 Antti Palola, https://github.com/Pantura\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF RGBA array PlugIn\n * @name rgba_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name processRGBA\n * @function\n *\n * Process RGBA Array. This is a one-dimension array with pixel data [red, green, blue, alpha, red, green, ...].\n * RGBA array data can be obtained from DOM canvas getImageData.\n * @ignore\n */\n jsPDFAPI.processRGBA = function(imageData, index, alias) {\n \"use strict\";\n\n var imagePixels = imageData.data;\n var length = imagePixels.length;\n // jsPDF takes alpha data separately so extract that.\n var rgbOut = new Uint8Array((length / 4) * 3);\n var alphaOut = new Uint8Array(length / 4);\n var outIndex = 0;\n var alphaIndex = 0;\n\n for (var i = 0; i < length; i += 4) {\n var r = imagePixels[i];\n var g = imagePixels[i + 1];\n var b = imagePixels[i + 2];\n var alpha = imagePixels[i + 3];\n rgbOut[outIndex++] = r;\n rgbOut[outIndex++] = g;\n rgbOut[outIndex++] = b;\n alphaOut[alphaIndex++] = alpha;\n }\n\n var rgbData = this.__addimage__.arrayBufferToBinaryString(rgbOut);\n var alphaData = this.__addimage__.arrayBufferToBinaryString(alphaOut);\n\n return {\n alpha: alphaData,\n data: rgbData,\n index: index,\n alias: alias,\n colorSpace: \"DeviceRGB\",\n bitsPerComponent: 8,\n width: imageData.width,\n height: imageData.height\n };\n };\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF setLanguage Plugin\n *\n * @name setLanguage\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Add Language Tag to the generated PDF\n *\n * @name setLanguage\n * @function\n * @param {string} langCode The Language code as ISO-639-1 (e.g. 'en') or as country language code (e.g. 'en-GB').\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF()\n * doc.text(10, 10, 'This is a test')\n * doc.setLanguage(\"en-US\")\n * doc.save('english.pdf')\n */\n jsPDFAPI.setLanguage = function(langCode) {\n \"use strict\";\n\n var langCodes = {\n af: \"Afrikaans\",\n sq: \"Albanian\",\n ar: \"Arabic (Standard)\",\n \"ar-DZ\": \"Arabic (Algeria)\",\n \"ar-BH\": \"Arabic (Bahrain)\",\n \"ar-EG\": \"Arabic (Egypt)\",\n \"ar-IQ\": \"Arabic (Iraq)\",\n \"ar-JO\": \"Arabic (Jordan)\",\n \"ar-KW\": \"Arabic (Kuwait)\",\n \"ar-LB\": \"Arabic (Lebanon)\",\n \"ar-LY\": \"Arabic (Libya)\",\n \"ar-MA\": \"Arabic (Morocco)\",\n \"ar-OM\": \"Arabic (Oman)\",\n \"ar-QA\": \"Arabic (Qatar)\",\n \"ar-SA\": \"Arabic (Saudi Arabia)\",\n \"ar-SY\": \"Arabic (Syria)\",\n \"ar-TN\": \"Arabic (Tunisia)\",\n \"ar-AE\": \"Arabic (U.A.E.)\",\n \"ar-YE\": \"Arabic (Yemen)\",\n an: \"Aragonese\",\n hy: \"Armenian\",\n as: \"Assamese\",\n ast: \"Asturian\",\n az: \"Azerbaijani\",\n eu: \"Basque\",\n be: \"Belarusian\",\n bn: \"Bengali\",\n bs: \"Bosnian\",\n br: \"Breton\",\n bg: \"Bulgarian\",\n my: \"Burmese\",\n ca: \"Catalan\",\n ch: \"Chamorro\",\n ce: \"Chechen\",\n zh: \"Chinese\",\n \"zh-HK\": \"Chinese (Hong Kong)\",\n \"zh-CN\": \"Chinese (PRC)\",\n \"zh-SG\": \"Chinese (Singapore)\",\n \"zh-TW\": \"Chinese (Taiwan)\",\n cv: \"Chuvash\",\n co: \"Corsican\",\n cr: \"Cree\",\n hr: \"Croatian\",\n cs: \"Czech\",\n da: \"Danish\",\n nl: \"Dutch (Standard)\",\n \"nl-BE\": \"Dutch (Belgian)\",\n en: \"English\",\n \"en-AU\": \"English (Australia)\",\n \"en-BZ\": \"English (Belize)\",\n \"en-CA\": \"English (Canada)\",\n \"en-IE\": \"English (Ireland)\",\n \"en-JM\": \"English (Jamaica)\",\n \"en-NZ\": \"English (New Zealand)\",\n \"en-PH\": \"English (Philippines)\",\n \"en-ZA\": \"English (South Africa)\",\n \"en-TT\": \"English (Trinidad & Tobago)\",\n \"en-GB\": \"English (United Kingdom)\",\n \"en-US\": \"English (United States)\",\n \"en-ZW\": \"English (Zimbabwe)\",\n eo: \"Esperanto\",\n et: \"Estonian\",\n fo: \"Faeroese\",\n fj: \"Fijian\",\n fi: \"Finnish\",\n fr: \"French (Standard)\",\n \"fr-BE\": \"French (Belgium)\",\n \"fr-CA\": \"French (Canada)\",\n \"fr-FR\": \"French (France)\",\n \"fr-LU\": \"French (Luxembourg)\",\n \"fr-MC\": \"French (Monaco)\",\n \"fr-CH\": \"French (Switzerland)\",\n fy: \"Frisian\",\n fur: \"Friulian\",\n gd: \"Gaelic (Scots)\",\n \"gd-IE\": \"Gaelic (Irish)\",\n gl: \"Galacian\",\n ka: \"Georgian\",\n de: \"German (Standard)\",\n \"de-AT\": \"German (Austria)\",\n \"de-DE\": \"German (Germany)\",\n \"de-LI\": \"German (Liechtenstein)\",\n \"de-LU\": \"German (Luxembourg)\",\n \"de-CH\": \"German (Switzerland)\",\n el: \"Greek\",\n gu: \"Gujurati\",\n ht: \"Haitian\",\n he: \"Hebrew\",\n hi: \"Hindi\",\n hu: \"Hungarian\",\n is: \"Icelandic\",\n id: \"Indonesian\",\n iu: \"Inuktitut\",\n ga: \"Irish\",\n it: \"Italian (Standard)\",\n \"it-CH\": \"Italian (Switzerland)\",\n ja: \"Japanese\",\n kn: \"Kannada\",\n ks: \"Kashmiri\",\n kk: \"Kazakh\",\n km: \"Khmer\",\n ky: \"Kirghiz\",\n tlh: \"Klingon\",\n ko: \"Korean\",\n \"ko-KP\": \"Korean (North Korea)\",\n \"ko-KR\": \"Korean (South Korea)\",\n la: \"Latin\",\n lv: \"Latvian\",\n lt: \"Lithuanian\",\n lb: \"Luxembourgish\",\n mk: \"North Macedonia\",\n ms: \"Malay\",\n ml: \"Malayalam\",\n mt: \"Maltese\",\n mi: \"Maori\",\n mr: \"Marathi\",\n mo: \"Moldavian\",\n nv: \"Navajo\",\n ng: \"Ndonga\",\n ne: \"Nepali\",\n no: \"Norwegian\",\n nb: \"Norwegian (Bokmal)\",\n nn: \"Norwegian (Nynorsk)\",\n oc: \"Occitan\",\n or: \"Oriya\",\n om: \"Oromo\",\n fa: \"Persian\",\n \"fa-IR\": \"Persian/Iran\",\n pl: \"Polish\",\n pt: \"Portuguese\",\n \"pt-BR\": \"Portuguese (Brazil)\",\n pa: \"Punjabi\",\n \"pa-IN\": \"Punjabi (India)\",\n \"pa-PK\": \"Punjabi (Pakistan)\",\n qu: \"Quechua\",\n rm: \"Rhaeto-Romanic\",\n ro: \"Romanian\",\n \"ro-MO\": \"Romanian (Moldavia)\",\n ru: \"Russian\",\n \"ru-MO\": \"Russian (Moldavia)\",\n sz: \"Sami (Lappish)\",\n sg: \"Sango\",\n sa: \"Sanskrit\",\n sc: \"Sardinian\",\n sd: \"Sindhi\",\n si: \"Singhalese\",\n sr: \"Serbian\",\n sk: \"Slovak\",\n sl: \"Slovenian\",\n so: \"Somani\",\n sb: \"Sorbian\",\n es: \"Spanish\",\n \"es-AR\": \"Spanish (Argentina)\",\n \"es-BO\": \"Spanish (Bolivia)\",\n \"es-CL\": \"Spanish (Chile)\",\n \"es-CO\": \"Spanish (Colombia)\",\n \"es-CR\": \"Spanish (Costa Rica)\",\n \"es-DO\": \"Spanish (Dominican Republic)\",\n \"es-EC\": \"Spanish (Ecuador)\",\n \"es-SV\": \"Spanish (El Salvador)\",\n \"es-GT\": \"Spanish (Guatemala)\",\n \"es-HN\": \"Spanish (Honduras)\",\n \"es-MX\": \"Spanish (Mexico)\",\n \"es-NI\": \"Spanish (Nicaragua)\",\n \"es-PA\": \"Spanish (Panama)\",\n \"es-PY\": \"Spanish (Paraguay)\",\n \"es-PE\": \"Spanish (Peru)\",\n \"es-PR\": \"Spanish (Puerto Rico)\",\n \"es-ES\": \"Spanish (Spain)\",\n \"es-UY\": \"Spanish (Uruguay)\",\n \"es-VE\": \"Spanish (Venezuela)\",\n sx: \"Sutu\",\n sw: \"Swahili\",\n sv: \"Swedish\",\n \"sv-FI\": \"Swedish (Finland)\",\n \"sv-SV\": \"Swedish (Sweden)\",\n ta: \"Tamil\",\n tt: \"Tatar\",\n te: \"Teluga\",\n th: \"Thai\",\n tig: \"Tigre\",\n ts: \"Tsonga\",\n tn: \"Tswana\",\n tr: \"Turkish\",\n tk: \"Turkmen\",\n uk: \"Ukrainian\",\n hsb: \"Upper Sorbian\",\n ur: \"Urdu\",\n ve: \"Venda\",\n vi: \"Vietnamese\",\n vo: \"Volapuk\",\n wa: \"Walloon\",\n cy: \"Welsh\",\n xh: \"Xhosa\",\n ji: \"Yiddish\",\n zu: \"Zulu\"\n };\n\n if (this.internal.languageSettings === undefined) {\n this.internal.languageSettings = {};\n this.internal.languageSettings.isSubscribed = false;\n }\n\n if (langCodes[langCode] !== undefined) {\n this.internal.languageSettings.languageCode = langCode;\n if (this.internal.languageSettings.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.write(\n \"/Lang (\" + this.internal.languageSettings.languageCode + \")\"\n );\n });\n this.internal.languageSettings.isSubscribed = true;\n }\n }\n return this;\n };\n})(jsPDF.API);\n","/** @license\n jsPDF standard_fonts_metrics plugin\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * MIT license.\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * This file adds the standard font metrics to jsPDF.\n *\n * Font metrics data is reprocessed derivative of contents of\n * \"Font Metrics for PDF Core 14 Fonts\" package, which exhibits the following copyright and license:\n *\n * Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\n *\n * This file and the 14 PostScript(R) AFM files it accompanies may be used,\n * copied, and distributed for any purpose and without charge, with or without\n * modification, provided that all copyright notices are retained; that the AFM\n * files are not distributed without this file; that all modifications to this\n * file or any of the AFM files are prominently noted in the modified file(s);\n * and that this paragraph is not modified. Adobe Systems has no responsibility\n * or obligation to support the use of the AFM files.\n *\n * @name standard_fonts_metrics\n * @module\n */\n\n(function(API) {\n \"use strict\";\n API.__fontmetrics__ = API.__fontmetrics__ || {};\n\n var decoded = \"0123456789abcdef\",\n encoded = \"klmnopqrstuvwxyz\",\n mappingUncompress = {},\n mappingCompress = {};\n\n for (var i = 0; i < encoded.length; i++) {\n mappingUncompress[encoded[i]] = decoded[i];\n mappingCompress[decoded[i]] = encoded[i];\n }\n\n var hex = function(value) {\n return \"0x\" + parseInt(value, 10).toString(16);\n };\n\n var compress = (API.__fontmetrics__.compress = function(data) {\n var vals = [\"{\"];\n var value, keystring, valuestring, numberprefix;\n\n for (var key in data) {\n value = data[key];\n\n if (!isNaN(parseInt(key, 10))) {\n key = parseInt(key, 10);\n keystring = hex(key).slice(2);\n keystring =\n keystring.slice(0, -1) + mappingCompress[keystring.slice(-1)];\n } else {\n keystring = \"'\" + key + \"'\";\n }\n\n if (typeof value == \"number\") {\n if (value < 0) {\n valuestring = hex(value).slice(3);\n numberprefix = \"-\";\n } else {\n valuestring = hex(value).slice(2);\n numberprefix = \"\";\n }\n valuestring =\n numberprefix +\n valuestring.slice(0, -1) +\n mappingCompress[valuestring.slice(-1)];\n } else {\n if (typeof value === \"object\") {\n valuestring = compress(value);\n } else {\n throw new Error(\n \"Don't know what to do with value type \" + typeof value + \".\"\n );\n }\n }\n vals.push(keystring + valuestring);\n }\n vals.push(\"}\");\n return vals.join(\"\");\n });\n\n /**\n * Uncompresses data compressed into custom, base16-like format.\n *\n * @public\n * @function\n * @param\n * @returns {Type}\n */\n var uncompress = (API.__fontmetrics__.uncompress = function(data) {\n if (typeof data !== \"string\") {\n throw new Error(\"Invalid argument passed to uncompress.\");\n }\n\n var output = {},\n sign = 1,\n stringparts, // undef. will be [] in string mode\n activeobject = output,\n parentchain = [],\n parent_key_pair,\n keyparts = \"\",\n valueparts = \"\",\n key, // undef. will be Truthy when Key is resolved.\n datalen = data.length - 1, // stripping ending }\n ch;\n\n for (var i = 1; i < datalen; i += 1) {\n // - { } ' are special.\n\n ch = data[i];\n\n if (ch == \"'\") {\n if (stringparts) {\n // end of string mode\n key = stringparts.join(\"\");\n stringparts = undefined;\n } else {\n // start of string mode\n stringparts = [];\n }\n } else if (stringparts) {\n stringparts.push(ch);\n } else if (ch == \"{\") {\n // start of object\n parentchain.push([activeobject, key]);\n activeobject = {};\n key = undefined;\n } else if (ch == \"}\") {\n // end of object\n parent_key_pair = parentchain.pop();\n parent_key_pair[0][parent_key_pair[1]] = activeobject;\n key = undefined;\n activeobject = parent_key_pair[0];\n } else if (ch == \"-\") {\n sign = -1;\n } else {\n // must be number\n if (key === undefined) {\n if (mappingUncompress.hasOwnProperty(ch)) {\n keyparts += mappingUncompress[ch];\n key = parseInt(keyparts, 16) * sign;\n sign = +1;\n keyparts = \"\";\n } else {\n keyparts += ch;\n }\n } else {\n if (mappingUncompress.hasOwnProperty(ch)) {\n valueparts += mappingUncompress[ch];\n activeobject[key] = parseInt(valueparts, 16) * sign;\n sign = +1;\n key = undefined;\n valueparts = \"\";\n } else {\n valueparts += ch;\n }\n }\n }\n }\n return output;\n });\n\n // encoding = 'Unicode'\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE. NO clever BOM behavior\n // Actual 16bit char codes used.\n // no multi-byte logic here\n\n // Unicode characters to WinAnsiEncoding:\n // {402: 131, 8211: 150, 8212: 151, 8216: 145, 8217: 146, 8218: 130, 8220: 147, 8221: 148, 8222: 132, 8224: 134, 8225: 135, 8226: 149, 8230: 133, 8364: 128, 8240:137, 8249: 139, 8250: 155, 710: 136, 8482: 153, 338: 140, 339: 156, 732: 152, 352: 138, 353: 154, 376: 159, 381: 142, 382: 158}\n // as you can see, all Unicode chars are outside of 0-255 range. No char code conflicts.\n // this means that you can give Win cp1252 encoded strings to jsPDF for rendering directly\n // as well as give strings with some (supported by these fonts) Unicode characters and\n // these will be mapped to win cp1252\n // for example, you can send char code (cp1252) 0x80 or (unicode) 0x20AC, getting \"Euro\" glyph displayed in both cases.\n\n var encodingBlock = {\n codePages: [\"WinAnsiEncoding\"],\n WinAnsiEncoding: uncompress(\n \"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\"\n )\n };\n var encodings = {\n Unicode: {\n Courier: encodingBlock,\n \"Courier-Bold\": encodingBlock,\n \"Courier-BoldOblique\": encodingBlock,\n \"Courier-Oblique\": encodingBlock,\n Helvetica: encodingBlock,\n \"Helvetica-Bold\": encodingBlock,\n \"Helvetica-BoldOblique\": encodingBlock,\n \"Helvetica-Oblique\": encodingBlock,\n \"Times-Roman\": encodingBlock,\n \"Times-Bold\": encodingBlock,\n \"Times-BoldItalic\": encodingBlock,\n \"Times-Italic\": encodingBlock\n //\t, 'Symbol'\n //\t, 'ZapfDingbats'\n }\n };\n\n var fontMetrics = {\n Unicode: {\n // all sizing numbers are n/fontMetricsFractionOf = one font size unit\n // this means that if fontMetricsFractionOf = 1000, and letter A's width is 476, it's\n // width is 476/1000 or 47.6% of its height (regardless of font size)\n // At this time this value applies to \"widths\" and \"kerning\" numbers.\n\n // char code 0 represents \"default\" (average) width - use it for chars missing in this table.\n // key 'fof' represents the \"fontMetricsFractionOf\" value\n\n \"Courier-Oblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-BoldItalic\": uncompress(\n \"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n \"Helvetica-Bold\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n Courier: uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-BoldOblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-Bold\": uncompress(\n \"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n Symbol: uncompress(\n \"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"\n ),\n Helvetica: uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n ),\n \"Helvetica-BoldOblique\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n ZapfDingbats: uncompress(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-Bold\": uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Times-Italic\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"\n ),\n \"Times-Roman\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"\n ),\n \"Helvetica-Oblique\": uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n )\n }\n };\n\n /*\n\tThis event handler is fired when a new jsPDF object is initialized\n\tThis event handler appends metrics data to standard fonts within\n\tthat jsPDF instance. The metrics are mapped over Unicode character\n\tcodes, NOT CIDs or other codes matching the StandardEncoding table of the\n\tstandard PDF fonts.\n\tFuture:\n\tAlso included is the encoding maping table, converting Unicode (UCS-2, UTF-16)\n\tchar codes to StandardEncoding character codes. The encoding table is to be used\n\tsomewhere around \"pdfEscape\" call.\n\t*/\n API.events.push([\n \"addFont\",\n function(data) {\n var font = data.font;\n\n var metrics = fontMetrics[\"Unicode\"][font.postScriptName];\n if (metrics) {\n font.metadata[\"Unicode\"] = {};\n font.metadata[\"Unicode\"].widths = metrics.widths;\n font.metadata[\"Unicode\"].kerning = metrics.kerning;\n }\n\n var encodingBlock = encodings[\"Unicode\"][font.postScriptName];\n if (encodingBlock) {\n font.metadata[\"Unicode\"].encoding = encodingBlock;\n font.encoding = encodingBlock.codePages[0];\n }\n }\n ]); // end of adding event handler\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob } from \"../libs/AtobBtoa.js\";\n\n/**\n * @name ttfsupport\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n\n var binaryStringToUint8Array = function(binary_string) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n };\n\n var addFont = function(font, file) {\n // eslint-disable-next-line no-control-regex\n if (/^\\x00\\x01\\x00\\x00/.test(file)) {\n file = binaryStringToUint8Array(file);\n } else {\n file = binaryStringToUint8Array(atob(file));\n }\n font.metadata = jsPDF.API.TTFFont.open(file);\n font.metadata.Unicode = font.metadata.Unicode || {\n encoding: {},\n kerning: {},\n widths: []\n };\n font.metadata.glyIdsUsed = [0];\n };\n\n jsPDF.API.events.push([\n \"addFont\",\n function(data) {\n var file = undefined;\n var font = data.font;\n var instance = data.instance;\n if (font.isStandardFont) {\n return;\n }\n if (typeof instance !== \"undefined\") {\n if (instance.existsFileInVFS(font.postScriptName) === false) {\n file = instance.loadFile(font.postScriptName);\n } else {\n file = instance.getFileFromVFS(font.postScriptName);\n }\n if (typeof file !== \"string\") {\n throw new Error(\n \"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n addFont(font, file);\n } else {\n throw new Error(\n \"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n }\n ]); // end of adding event handler\n})(jsPDF);\n","/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { console } from \"../libs/console.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF SVG plugin\n *\n * @name svg\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadCanvg() {\n return (function() {\n if (globalObject[\"canvg\"]) {\n return Promise.resolve(globalObject[\"canvg\"]);\n }\n\n return import(\"canvg\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load canvg: \" + e));\n })\n .then(function(canvg) {\n return canvg.default ? canvg.default : canvg;\n });\n }\n\n /**\n * Parses SVG XML and saves it as image into the PDF.\n *\n * Depends on canvas-element and canvg\n *\n * @name addSvgAsImage\n * @public\n * @function\n * @param {string} SVG-Data as Text\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width of SVG-Image (in units declared at inception of PDF document)\n * @param {number} height of SVG-Image (in units declared at inception of PDF document)\n * @param {string} alias of SVG-Image (if used multiple times)\n * @param {string} compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation of the image in degrees (0-359)\n *\n * @returns jsPDF jsPDF-instance\n */\n jsPDFAPI.addSvgAsImage = function(\n svg,\n x,\n y,\n w,\n h,\n alias,\n compression,\n rotation\n ) {\n if (isNaN(x) || isNaN(y)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid coordinates\", arguments);\n throw new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");\n }\n\n if (isNaN(w) || isNaN(h)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid measurements\", arguments);\n throw new Error(\n \"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\"\n );\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n var ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"#fff\"; /// set white fill style\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n var options = {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true\n };\n var doc = this;\n return loadCanvg()\n .then(\n function(canvg) {\n return canvg.fromString(ctx, svg, options);\n },\n function() {\n return Promise.reject(new Error(\"Could not load canvg.\"));\n }\n )\n .then(function(instance) {\n return instance.render(options);\n })\n .then(function() {\n doc.addImage(\n canvas.toDataURL(\"image/jpeg\", 1.0),\n x,\n y,\n w,\n h,\n compression,\n rotation\n );\n });\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF total_pages plugin\n * @name total_pages\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * @name putTotalPages\n * @function\n * @param {string} pageExpression Regular Expression\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.putTotalPages = function(pageExpression) {\n \"use strict\";\n\n var replaceExpression;\n var totalNumberOfPages = 0;\n if (parseInt(this.internal.getFont().id.substr(1), 10) < 15) {\n replaceExpression = new RegExp(pageExpression, \"g\");\n totalNumberOfPages = this.internal.getNumberOfPages();\n } else {\n replaceExpression = new RegExp(\n this.pdfEscape16(pageExpression, this.internal.getFont()),\n \"g\"\n );\n totalNumberOfPages = this.pdfEscape16(\n this.internal.getNumberOfPages() + \"\",\n this.internal.getFont()\n );\n }\n\n for (var n = 1; n <= this.internal.getNumberOfPages(); n++) {\n for (var i = 0; i < this.internal.pages[n].length; i++) {\n this.internal.pages[n][i] = this.internal.pages[n][i].replace(\n replaceExpression,\n totalNumberOfPages\n );\n }\n }\n\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF viewerPreferences Plugin\n * @author Aras Abbasi (github.com/arasabbasi)\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Adds the ability to set ViewerPreferences and by thus\n * controlling the way the document is to be presented on the\n * screen or in print.\n * @name viewerpreferences\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * Set the ViewerPreferences of the generated PDF\n *\n * @name viewerPreferences\n * @function\n * @public\n * @param {Object} options Array with the ViewerPreferences
    \n * Example: doc.viewerPreferences({\"FitWindow\":true});
    \n *
    \n * You can set following preferences:
    \n *
    \n * HideToolbar (boolean)
    \n * Default value: false
    \n *
    \n * HideMenubar (boolean)
    \n * Default value: false.
    \n *
    \n * HideWindowUI (boolean)
    \n * Default value: false.
    \n *
    \n * FitWindow (boolean)
    \n * Default value: false.
    \n *
    \n * CenterWindow (boolean)
    \n * Default value: false
    \n *
    \n * DisplayDocTitle (boolean)
    \n * Default value: false.
    \n *
    \n * NonFullScreenPageMode (string)
    \n * Possible values: UseNone, UseOutlines, UseThumbs, UseOC
    \n * Default value: UseNone
    \n *
    \n * Direction (string)
    \n * Possible values: L2R, R2L
    \n * Default value: L2R.
    \n *
    \n * ViewArea (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox.
    \n *
    \n * ViewClip (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox
    \n *
    \n * PrintArea (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox
    \n *
    \n * PrintClip (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox.
    \n *
    \n * PrintScaling (string)
    \n * Possible values: AppDefault, None
    \n * Default value: AppDefault.
    \n *
    \n * Duplex (string)
    \n * Possible values: Simplex, DuplexFlipLongEdge, DuplexFlipShortEdge\n * Default value: none
    \n *
    \n * PickTrayByPDFSize (boolean)
    \n * Default value: false
    \n *
    \n * PrintPageRange (Array)
    \n * Example: [[1,5], [7,9]]
    \n * Default value: as defined by PDF viewer application
    \n *
    \n * NumCopies (Number)
    \n * Possible values: 1, 2, 3, 4, 5
    \n * Default value: 1
    \n *
    \n * For more information see the PDF Reference, sixth edition on Page 577\n * @param {boolean} doReset True to reset the settings\n * @function\n * @returns jsPDF jsPDF-instance\n * @example\n * var doc = new jsPDF()\n * doc.text('This is a test', 10, 10)\n * doc.viewerPreferences({'FitWindow': true}, true)\n * doc.save(\"viewerPreferences.pdf\")\n *\n * // Example printing 10 copies, using cropbox, and hiding UI.\n * doc.viewerPreferences({\n * 'HideWindowUI': true,\n * 'PrintArea': 'CropBox',\n * 'NumCopies': 10\n * })\n */\n jsPDFAPI.viewerPreferences = function(options, doReset) {\n options = options || {};\n doReset = doReset || false;\n\n var configuration;\n var configurationTemplate = {\n HideToolbar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideMenubar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideWindowUI: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n FitWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n CenterWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n DisplayDocTitle: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.4\n },\n NonFullScreenPageMode: {\n defaultValue: \"UseNone\",\n value: \"UseNone\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"UseNone\", \"UseOutlines\", \"UseThumbs\", \"UseOC\"],\n pdfVersion: 1.3\n },\n Direction: {\n defaultValue: \"L2R\",\n value: \"L2R\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"L2R\", \"R2L\"],\n pdfVersion: 1.3\n },\n ViewArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n ViewClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintScaling: {\n defaultValue: \"AppDefault\",\n value: \"AppDefault\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"AppDefault\", \"None\"],\n pdfVersion: 1.6\n },\n Duplex: {\n defaultValue: \"\",\n value: \"none\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\n \"Simplex\",\n \"DuplexFlipShortEdge\",\n \"DuplexFlipLongEdge\",\n \"none\"\n ],\n pdfVersion: 1.7\n },\n PickTrayByPDFSize: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.7\n },\n PrintPageRange: {\n defaultValue: \"\",\n value: \"\",\n type: \"array\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n },\n NumCopies: {\n defaultValue: 1,\n value: 1,\n type: \"integer\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n }\n };\n\n var configurationKeys = Object.keys(configurationTemplate);\n\n var rangeArray = [];\n var i = 0;\n var j = 0;\n var k = 0;\n var isValid;\n\n var method;\n var value;\n\n function arrayContainsElement(array, element) {\n var iterator;\n var result = false;\n\n for (iterator = 0; iterator < array.length; iterator += 1) {\n if (array[iterator] === element) {\n result = true;\n }\n }\n return result;\n }\n\n if (this.internal.viewerpreferences === undefined) {\n this.internal.viewerpreferences = {};\n this.internal.viewerpreferences.configuration = JSON.parse(\n JSON.stringify(configurationTemplate)\n );\n this.internal.viewerpreferences.isSubscribed = false;\n }\n configuration = this.internal.viewerpreferences.configuration;\n\n if (options === \"reset\" || doReset === true) {\n var len = configurationKeys.length;\n\n for (k = 0; k < len; k += 1) {\n configuration[configurationKeys[k]].value =\n configuration[configurationKeys[k]].defaultValue;\n configuration[configurationKeys[k]].explicitSet = false;\n }\n }\n\n if (typeof options === \"object\") {\n for (method in options) {\n value = options[method];\n if (\n arrayContainsElement(configurationKeys, method) &&\n value !== undefined\n ) {\n if (\n configuration[method].type === \"boolean\" &&\n typeof value === \"boolean\"\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"name\" &&\n arrayContainsElement(configuration[method].valueSet, value)\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"integer\" &&\n Number.isInteger(value)\n ) {\n configuration[method].value = value;\n } else if (configuration[method].type === \"array\") {\n for (i = 0; i < value.length; i += 1) {\n isValid = true;\n if (value[i].length === 1 && typeof value[i][0] === \"number\") {\n rangeArray.push(String(value[i] - 1));\n } else if (value[i].length > 1) {\n for (j = 0; j < value[i].length; j += 1) {\n if (typeof value[i][j] !== \"number\") {\n isValid = false;\n }\n }\n if (isValid === true) {\n rangeArray.push([value[i][0] - 1, value[i][1] - 1].join(\" \"));\n }\n }\n }\n configuration[method].value = \"[\" + rangeArray.join(\" \") + \"]\";\n } else {\n configuration[method].value = configuration[method].defaultValue;\n }\n\n configuration[method].explicitSet = true;\n }\n }\n }\n\n if (this.internal.viewerpreferences.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n var pdfDict = [];\n var vPref;\n for (vPref in configuration) {\n if (configuration[vPref].explicitSet === true) {\n if (configuration[vPref].type === \"name\") {\n pdfDict.push(\"/\" + vPref + \" /\" + configuration[vPref].value);\n } else {\n pdfDict.push(\"/\" + vPref + \" \" + configuration[vPref].value);\n }\n }\n }\n if (pdfDict.length !== 0) {\n this.internal.write(\n \"/ViewerPreferences\\n<<\\n\" + pdfDict.join(\"\\n\") + \"\\n>>\"\n );\n }\n });\n this.internal.viewerpreferences.isSubscribed = true;\n }\n\n this.internal.viewerpreferences.configuration = configuration;\n return this;\n };\n})(jsPDF.API);\n","/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name xmp_metadata\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var postPutResources = function() {\n var xmpmeta_beginning = '';\n var rdf_beginning =\n '';\n var rdf_ending = \"\";\n var xmpmeta_ending = \"\";\n var utf8_xmpmeta_beginning = unescape(\n encodeURIComponent(xmpmeta_beginning)\n );\n var utf8_rdf_beginning = unescape(encodeURIComponent(rdf_beginning));\n var utf8_metadata = unescape(\n encodeURIComponent(this.internal.__metadata__.metadata)\n );\n var utf8_rdf_ending = unescape(encodeURIComponent(rdf_ending));\n var utf8_xmpmeta_ending = unescape(encodeURIComponent(xmpmeta_ending));\n\n var total_len =\n utf8_rdf_beginning.length +\n utf8_metadata.length +\n utf8_rdf_ending.length +\n utf8_xmpmeta_beginning.length +\n utf8_xmpmeta_ending.length;\n\n this.internal.__metadata__.metadata_object_number = this.internal.newObject();\n this.internal.write(\n \"<< /Type /Metadata /Subtype /XML /Length \" + total_len + \" >>\"\n );\n this.internal.write(\"stream\");\n this.internal.write(\n utf8_xmpmeta_beginning +\n utf8_rdf_beginning +\n utf8_metadata +\n utf8_rdf_ending +\n utf8_xmpmeta_ending\n );\n this.internal.write(\"endstream\");\n this.internal.write(\"endobj\");\n };\n\n var putCatalog = function() {\n if (this.internal.__metadata__.metadata_object_number) {\n this.internal.write(\n \"/Metadata \" +\n this.internal.__metadata__.metadata_object_number +\n \" 0 R\"\n );\n }\n };\n\n /**\n * Adds XMP formatted metadata to PDF\n *\n * @name addMetadata\n * @function\n * @param {String} metadata The actual metadata to be added. The metadata shall be stored as XMP simple value. Note that if the metadata string contains XML markup characters \"<\", \">\" or \"&\", those characters should be written using XML entities.\n * @param {String} namespaceuri Sets the namespace URI for the metadata. Last character should be slash or hash.\n * @returns {jsPDF} jsPDF-instance\n */\n jsPDFAPI.addMetadata = function(metadata, namespaceuri) {\n if (typeof this.internal.__metadata__ === \"undefined\") {\n this.internal.__metadata__ = {\n metadata: metadata,\n namespaceuri: namespaceuri || \"http://jspdf.default.namespaceuri/\"\n };\n this.internal.events.subscribe(\"putCatalog\", putCatalog);\n\n this.internal.events.subscribe(\"postPutResources\", postPutResources);\n }\n return this;\n };\n})(jsPDF.API);\n","import { jsPDF } from \"../jspdf.js\";\nimport { toPDFName } from \"../libs/pdfname.js\";\n\n/**\n * @name utf8\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n var jsPDFAPI = jsPDF.API;\n\n /***************************************************************************************************/\n /* function : pdfEscape16 */\n /* comment : The character id of a 2-byte string is converted to a hexadecimal number by obtaining */\n /* the corresponding glyph id and width, and then adding padding to the string. */\n /***************************************************************************************************/\n var pdfEscape16 = (jsPDFAPI.pdfEscape16 = function(text, font) {\n var widths = font.metadata.Unicode.widths;\n var padz = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n var ar = [\"\"];\n for (var i = 0, l = text.length, t; i < l; ++i) {\n t = font.metadata.characterToGlyph(text.charCodeAt(i));\n font.metadata.glyIdsUsed.push(t);\n font.metadata.toUnicode[t] = text.charCodeAt(i);\n if (widths.indexOf(t) == -1) {\n widths.push(t);\n widths.push([parseInt(font.metadata.widthOfGlyph(t), 10)]);\n }\n if (t == \"0\") {\n //Spaces are not allowed in cmap.\n return ar.join(\"\");\n } else {\n t = t.toString(16);\n ar.push(padz[4 - t.length], t);\n }\n }\n return ar.join(\"\");\n });\n\n var toUnicodeCmap = function(map) {\n var code, codes, range, unicode, unicodeMap, _i, _len;\n unicodeMap =\n \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000>\\nendcodespacerange\";\n codes = Object.keys(map).sort(function(a, b) {\n return a - b;\n });\n\n range = [];\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (range.length >= 100) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\";\n range = [];\n }\n\n if (\n map[code] !== undefined &&\n map[code] !== null &&\n typeof map[code].toString === \"function\"\n ) {\n unicode = (\"0000\" + map[code].toString(16)).slice(-4);\n code = (\"0000\" + (+code).toString(16)).slice(-4);\n range.push(\"<\" + code + \"><\" + unicode + \">\");\n }\n }\n\n if (range.length) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\\n\";\n }\n unicodeMap +=\n \"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\";\n return unicodeMap;\n };\n\n var identityHFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"Identity-H\"\n ) {\n //Tag with Identity-H\n var widths = font.metadata.Unicode.widths;\n var data = font.metadata.subset.encode(font.metadata.glyIdsUsed, 1);\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Type /FontDescriptor\");\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/Flags \" + font.metadata.flags);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\">>\");\n out(\"endobj\");\n\n var DescendantFont = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/FontDescriptor \" + fontDescriptor + \" 0 R\");\n out(\"/W \" + jsPDF.API.PDFObject.convert(widths));\n out(\"/CIDToGIDMap /Identity\");\n out(\"/DW 1000\");\n out(\"/Subtype /CIDFontType2\");\n out(\"/CIDSystemInfo\");\n out(\"<<\");\n out(\"/Supplement 0\");\n out(\"/Registry (Adobe)\");\n out(\"/Ordering (\" + font.encoding + \")\");\n out(\">>\");\n out(\">>\");\n out(\"endobj\");\n\n font.objectNumber = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/Subtype /Type0\");\n out(\"/ToUnicode \" + cmap + \" 0 R\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/Encoding /\" + font.encoding);\n out(\"/DescendantFonts [\" + DescendantFont + \" 0 R]\");\n out(\">>\");\n out(\"endobj\");\n\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n identityHFunction(args);\n }\n ]);\n\n var winAnsiEncodingFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"WinAnsiEncoding\"\n ) {\n //Tag with WinAnsi encoding\n var data = font.metadata.rawData;\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/Type /FontDescriptor\");\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/Flags 96\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\">>\");\n out(\"endobj\");\n font.objectNumber = newObject();\n for (var j = 0; j < font.metadata.hmtx.widths.length; j++) {\n font.metadata.hmtx.widths[j] = parseInt(\n font.metadata.hmtx.widths[j] * (1000 / font.metadata.head.unitsPerEm)\n ); //Change the width of Em units to Point units.\n }\n out(\n \"<>\"\n );\n out(\"endobj\");\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n winAnsiEncodingFunction(args);\n }\n ]);\n\n var utf8TextFunction = function(args) {\n var text = args.text || \"\";\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n\n var pdfEscape = mutex.pdfEscape;\n var activeFontKey = mutex.activeFontKey;\n var fonts = mutex.fonts;\n var key = activeFontKey;\n\n var str = \"\",\n s = 0,\n cmapConfirm;\n var strText = \"\";\n var encoding = fonts[key].encoding;\n\n if (fonts[key].encoding !== \"Identity-H\") {\n return {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n }\n strText = text;\n\n key = activeFontKey;\n if (Array.isArray(text)) {\n strText = text[0];\n }\n for (s = 0; s < strText.length; s += 1) {\n if (fonts[key].metadata.hasOwnProperty(\"cmap\")) {\n cmapConfirm =\n fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)];\n /*\n if (Object.prototype.toString.call(text) === '[object Array]') {\n var i = 0;\n // for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[s]) === '[object Array]') {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s][0].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n } else {\n\n }\n //}\n\n } else {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n }*/\n }\n if (!cmapConfirm) {\n if (\n strText[s].charCodeAt(0) < 256 &&\n fonts[key].metadata.hasOwnProperty(\"Unicode\")\n ) {\n str += strText[s];\n } else {\n str += \"\";\n }\n } else {\n str += strText[s];\n }\n }\n var result = \"\";\n if (parseInt(key.slice(1)) < 14 || encoding === \"WinAnsiEncoding\") {\n //For the default 13 font\n result = pdfEscape(str, key)\n .split(\"\")\n .map(function(cv) {\n return cv.charCodeAt(0).toString(16);\n })\n .join(\"\");\n } else if (encoding === \"Identity-H\") {\n result = pdfEscape16(str, fonts[key]);\n }\n mutex.isHex = true;\n\n return {\n text: result,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n };\n\n var utf8EscapeFunction = function(parms) {\n var text = parms.text || \"\",\n x = parms.x,\n y = parms.y,\n options = parms.options,\n mutex = parms.mutex;\n var tmpText = [];\n var args = {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n\n if (Array.isArray(text)) {\n var i = 0;\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n if (text[i].length === 3) {\n tmpText.push([\n utf8TextFunction(Object.assign({}, args, { text: text[i][0] }))\n .text,\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n }\n parms.text = tmpText;\n } else {\n parms.text = utf8TextFunction(\n Object.assign({}, args, { text: text })\n ).text;\n }\n };\n\n jsPDFAPI.events.push([\"postProcessText\", utf8EscapeFunction]);\n})(jsPDF);\n","/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Use the vFS to handle files\n *\n * @name vFS\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var _initializeVFS = function() {\n if (typeof this.internal.vFS === \"undefined\") {\n this.internal.vFS = {};\n }\n return true;\n };\n\n /**\n * Check if the file exists in the vFS\n *\n * @name existsFileInVFS\n * @function\n * @param {string} Possible filename in the vFS.\n * @returns {boolean}\n * @example\n * doc.existsFileInVFS(\"someFile.txt\");\n */\n jsPDFAPI.existsFileInVFS = function(filename) {\n _initializeVFS.call(this);\n return typeof this.internal.vFS[filename] !== \"undefined\";\n };\n\n /**\n * Add a file to the vFS\n *\n * @name addFileToVFS\n * @function\n * @param {string} filename The name of the file which should be added.\n * @param {string} filecontent The content of the file.\n * @returns {jsPDF}\n * @example\n * doc.addFileToVFS(\"someFile.txt\", \"BADFACE1\");\n */\n jsPDFAPI.addFileToVFS = function(filename, filecontent) {\n _initializeVFS.call(this);\n this.internal.vFS[filename] = filecontent;\n return this;\n };\n\n /**\n * Get the file from the vFS\n *\n * @name getFileFromVFS\n * @function\n * @param {string} The name of the file which gets requested.\n * @returns {string}\n * @example\n * doc.getFileFromVFS(\"someFile.txt\");\n */\n jsPDFAPI.getFileFromVFS = function(filename) {\n _initializeVFS.call(this);\n\n if (typeof this.internal.vFS[filename] !== \"undefined\") {\n return this.internal.vFS[filename];\n }\n return null;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDF) {\n \"use strict\";\n /**\n * Table of Unicode types.\n *\n * Generated by:\n *\n * var bidi = require(\"./bidi/index\");\n * var bidi_accumulate = bidi.slice(0, 256).concat(bidi.slice(0x0500, 0x0500 + 256 * 3)).\n * concat(bidi.slice(0x2000, 0x2000 + 256)).concat(bidi.slice(0xFB00, 0xFB00 + 256)).\n * concat(bidi.slice(0xFE00, 0xFE00 + 2 * 256));\n *\n * for( var i = 0; i < bidi_accumulate.length; i++) {\n * \tif(bidi_accumulate[i] === undefined || bidi_accumulate[i] === 'ON')\n * \t\tbidi_accumulate[i] = 'N'; //mark as neutral to conserve space and substitute undefined\n * }\n * var bidiAccumulateStr = 'return [ \"' + bidi_accumulate.toString().replace(/,/g, '\", \"') + '\" ];';\n * require(\"fs\").writeFile('unicode-types.js', bidiAccumulateStr);\n *\n * Based on:\n * https://github.com/mathiasbynens/unicode-8.0.0\n */\n var bidiUnicodeTypes = [\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"S\",\n \"B\",\n \"S\",\n \"WS\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"B\",\n \"B\",\n \"S\",\n \"WS\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"CS\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"EN\",\n \"EN\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"N\",\n \"N\",\n \"AL\",\n \"ET\",\n \"ET\",\n \"AL\",\n \"CS\",\n \"AL\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"ET\",\n \"AN\",\n \"AN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"L\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"B\",\n \"LRE\",\n \"RLE\",\n \"PDF\",\n \"LRO\",\n \"RLO\",\n \"CS\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"N\",\n \"LRI\",\n \"RLI\",\n \"FSI\",\n \"PDI\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"NSM\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"ES\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"N\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\"\n ];\n\n /**\n * Unicode Bidi algorithm compliant Bidi engine.\n * For reference see http://unicode.org/reports/tr9/\n */\n\n /**\n * constructor ( options )\n *\n * Initializes Bidi engine\n *\n * @param {Object} See 'setOptions' below for detailed description.\n * options are cashed between invocation of 'doBidiReorder' method\n *\n * sample usage pattern of BidiEngine:\n * var opt = {\n * \tisInputVisual: true,\n * \tisInputRtl: false,\n * \tisOutputVisual: false,\n * \tisOutputRtl: false,\n * \tisSymmetricSwapping: true\n * }\n * var sourceToTarget = [], levels = [];\n * var bidiEng = Globalize.bidiEngine(opt);\n * var src = \"text string to be reordered\";\n * var ret = bidiEng.doBidiReorder(src, sourceToTarget, levels);\n */\n\n jsPDF.__bidiEngine__ = jsPDF.prototype.__bidiEngine__ = function(options) {\n var _UNICODE_TYPES = _bidiUnicodeTypes;\n\n var _STATE_TABLE_LTR = [\n [0, 3, 0, 1, 0, 0, 0],\n [0, 3, 0, 1, 2, 2, 0],\n [0, 3, 0, 0x11, 2, 0, 1],\n [0, 3, 5, 5, 4, 1, 0],\n [0, 3, 0x15, 0x15, 4, 0, 1],\n [0, 3, 5, 5, 4, 2, 0]\n ];\n\n var _STATE_TABLE_RTL = [\n [2, 0, 1, 1, 0, 1, 0],\n [2, 0, 1, 1, 0, 2, 0],\n [2, 0, 2, 1, 3, 2, 0],\n [2, 0, 2, 0x21, 3, 1, 1]\n ];\n\n var _TYPE_NAMES_MAP = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 };\n\n var _UNICODE_RANGES_MAP = {\n 0: 0,\n 5: 1,\n 6: 2,\n 7: 3,\n 0x20: 4,\n 0xfb: 5,\n 0xfe: 6,\n 0xff: 7\n };\n\n var _SWAP_TABLE = [\n \"\\u0028\",\n \"\\u0029\",\n \"\\u0028\",\n \"\\u003C\",\n \"\\u003E\",\n \"\\u003C\",\n \"\\u005B\",\n \"\\u005D\",\n \"\\u005B\",\n \"\\u007B\",\n \"\\u007D\",\n \"\\u007B\",\n \"\\u00AB\",\n \"\\u00BB\",\n \"\\u00AB\",\n \"\\u2039\",\n \"\\u203A\",\n \"\\u2039\",\n \"\\u2045\",\n \"\\u2046\",\n \"\\u2045\",\n \"\\u207D\",\n \"\\u207E\",\n \"\\u207D\",\n \"\\u208D\",\n \"\\u208E\",\n \"\\u208D\",\n \"\\u2264\",\n \"\\u2265\",\n \"\\u2264\",\n \"\\u2329\",\n \"\\u232A\",\n \"\\u2329\",\n \"\\uFE59\",\n \"\\uFE5A\",\n \"\\uFE59\",\n \"\\uFE5B\",\n \"\\uFE5C\",\n \"\\uFE5B\",\n \"\\uFE5D\",\n \"\\uFE5E\",\n \"\\uFE5D\",\n \"\\uFE64\",\n \"\\uFE65\",\n \"\\uFE64\"\n ];\n\n var _LTR_RANGES_REG_EXPR = new RegExp(\n /^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/\n );\n\n var _lastArabic = false,\n _hasUbatAl,\n _hasUbatB,\n _hasUbatS,\n DIR_LTR = 0,\n DIR_RTL = 1,\n _isInVisual,\n _isInRtl,\n _isOutVisual,\n _isOutRtl,\n _isSymmetricSwapping,\n _dir = DIR_LTR;\n\n this.__bidiEngine__ = {};\n\n var _init = function(text, sourceToTargetMap) {\n if (sourceToTargetMap) {\n for (var i = 0; i < text.length; i++) {\n sourceToTargetMap[i] = i;\n }\n }\n if (_isInRtl === undefined) {\n _isInRtl = _isContextualDirRtl(text);\n }\n if (_isOutRtl === undefined) {\n _isOutRtl = _isContextualDirRtl(text);\n }\n };\n\n // for reference see 3.2 in http://unicode.org/reports/tr9/\n //\n var _getCharType = function(ch) {\n var charCode = ch.charCodeAt(),\n range = charCode >> 8,\n rangeIdx = _UNICODE_RANGES_MAP[range];\n\n if (rangeIdx !== undefined) {\n return _UNICODE_TYPES[rangeIdx * 256 + (charCode & 0xff)];\n } else if (range === 0xfc || range === 0xfd) {\n return \"AL\";\n } else if (_LTR_RANGES_REG_EXPR.test(range)) {\n //unlikely case\n return \"L\";\n } else if (range === 8) {\n // even less likely\n return \"R\";\n }\n return \"N\"; //undefined type, mark as neutral\n };\n\n var _isContextualDirRtl = function(text) {\n for (var i = 0, charType; i < text.length; i++) {\n charType = _getCharType(text.charAt(i));\n if (charType === \"L\") {\n return false;\n } else if (charType === \"R\") {\n return true;\n }\n }\n return false;\n };\n\n // for reference see 3.3.4 & 3.3.5 in http://unicode.org/reports/tr9/\n //\n var _resolveCharType = function(chars, types, resolvedTypes, index) {\n var cType = types[index],\n wType,\n nType,\n i,\n len;\n switch (cType) {\n case \"L\":\n case \"R\":\n _lastArabic = false;\n break;\n case \"N\":\n case \"AN\":\n break;\n\n case \"EN\":\n if (_lastArabic) {\n cType = \"AN\";\n }\n break;\n\n case \"AL\":\n _lastArabic = true;\n _hasUbatAl = true;\n cType = \"R\";\n break;\n\n case \"WS\":\n cType = \"N\";\n break;\n\n case \"CS\":\n if (\n index < 1 ||\n index + 1 >= types.length ||\n ((wType = resolvedTypes[index - 1]) !== \"EN\" && wType !== \"AN\") ||\n ((nType = types[index + 1]) !== \"EN\" && nType !== \"AN\")\n ) {\n cType = \"N\";\n } else if (_lastArabic) {\n nType = \"AN\";\n }\n cType = nType === wType ? nType : \"N\";\n break;\n\n case \"ES\":\n wType = index > 0 ? resolvedTypes[index - 1] : \"B\";\n cType =\n wType === \"EN\" &&\n index + 1 < types.length &&\n types[index + 1] === \"EN\"\n ? \"EN\"\n : \"N\";\n break;\n\n case \"ET\":\n if (index > 0 && resolvedTypes[index - 1] === \"EN\") {\n cType = \"EN\";\n break;\n } else if (_lastArabic) {\n cType = \"N\";\n break;\n }\n i = index + 1;\n len = types.length;\n while (i < len && types[i] === \"ET\") {\n i++;\n }\n if (i < len && types[i] === \"EN\") {\n cType = \"EN\";\n } else {\n cType = \"N\";\n }\n break;\n\n case \"NSM\":\n if (_isInVisual && !_isInRtl) {\n //V->L\n len = types.length;\n i = index + 1;\n while (i < len && types[i] === \"NSM\") {\n i++;\n }\n if (i < len) {\n var c = chars[index];\n var rtlCandidate = (c >= 0x0591 && c <= 0x08ff) || c === 0xfb1e;\n wType = types[i];\n if (rtlCandidate && (wType === \"R\" || wType === \"AL\")) {\n cType = \"R\";\n break;\n }\n }\n }\n if (index < 1 || (wType = types[index - 1]) === \"B\") {\n cType = \"N\";\n } else {\n cType = resolvedTypes[index - 1];\n }\n break;\n\n case \"B\":\n _lastArabic = false;\n _hasUbatB = true;\n cType = _dir;\n break;\n\n case \"S\":\n _hasUbatS = true;\n cType = \"N\";\n break;\n\n case \"LRE\":\n case \"RLE\":\n case \"LRO\":\n case \"RLO\":\n case \"PDF\":\n _lastArabic = false;\n break;\n case \"BN\":\n cType = \"N\";\n break;\n }\n return cType;\n };\n\n var _handleUbatS = function(types, levels, length) {\n for (var i = 0; i < length; i++) {\n if (types[i] === \"S\") {\n levels[i] = _dir;\n for (var j = i - 1; j >= 0; j--) {\n if (types[j] === \"WS\") {\n levels[j] = _dir;\n } else {\n break;\n }\n }\n }\n }\n };\n\n var _invertString = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\");\n if (levels) {\n _computeLevels(charArray, levels, { hiLevel: _dir });\n }\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return charArray.join(\"\");\n };\n\n // For reference see 3.3 in http://unicode.org/reports/tr9/\n //\n var _computeLevels = function(chars, levels, params) {\n var action,\n condition,\n i,\n index,\n newLevel,\n prevState,\n condPos = -1,\n len = chars.length,\n newState = 0,\n resolvedTypes = [],\n stateTable = _dir ? _STATE_TABLE_RTL : _STATE_TABLE_LTR,\n types = [];\n\n _lastArabic = false;\n _hasUbatAl = false;\n _hasUbatB = false;\n _hasUbatS = false;\n for (i = 0; i < len; i++) {\n types[i] = _getCharType(chars[i]);\n }\n for (index = 0; index < len; index++) {\n prevState = newState;\n resolvedTypes[index] = _resolveCharType(\n chars,\n types,\n resolvedTypes,\n index\n );\n newState = stateTable[prevState][_TYPE_NAMES_MAP[resolvedTypes[index]]];\n action = newState & 0xf0;\n newState &= 0x0f;\n levels[index] = newLevel = stateTable[newState][5];\n if (action > 0) {\n if (action === 0x10) {\n for (i = condPos; i < index; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n } else {\n condPos = -1;\n }\n }\n condition = stateTable[newState][6];\n if (condition) {\n if (condPos === -1) {\n condPos = index;\n }\n } else {\n if (condPos > -1) {\n for (i = condPos; i < index; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (types[index] === \"B\") {\n levels[index] = 0;\n }\n params.hiLevel |= newLevel;\n }\n if (_hasUbatS) {\n _handleUbatS(types, levels, len);\n }\n };\n\n // for reference see 3.4 in http://unicode.org/reports/tr9/\n //\n var _invertByLevel = function(\n level,\n charArray,\n sourceToTargetMap,\n levels,\n params\n ) {\n if (params.hiLevel < level) {\n return;\n }\n if (level === 1 && _dir === DIR_RTL && !_hasUbatB) {\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return;\n }\n var ch,\n high,\n end,\n low,\n len = charArray.length,\n start = 0;\n\n while (start < len) {\n if (levels[start] >= level) {\n end = start + 1;\n while (end < len && levels[end] >= level) {\n end++;\n }\n for (low = start, high = end - 1; low < high; low++, high--) {\n ch = charArray[low];\n charArray[low] = charArray[high];\n charArray[high] = ch;\n if (sourceToTargetMap) {\n ch = sourceToTargetMap[low];\n sourceToTargetMap[low] = sourceToTargetMap[high];\n sourceToTargetMap[high] = ch;\n }\n }\n start = end;\n }\n start++;\n }\n };\n\n // for reference see 7 & BD16 in http://unicode.org/reports/tr9/\n //\n var _symmetricSwap = function(charArray, levels, params) {\n if (params.hiLevel !== 0 && _isSymmetricSwapping) {\n for (var i = 0, index; i < charArray.length; i++) {\n if (levels[i] === 1) {\n index = _SWAP_TABLE.indexOf(charArray[i]);\n if (index >= 0) {\n charArray[i] = _SWAP_TABLE[index + 1];\n }\n }\n }\n }\n };\n\n var _reorder = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\"),\n params = { hiLevel: _dir };\n\n if (!levels) {\n levels = [];\n }\n _computeLevels(charArray, levels, params);\n _symmetricSwap(charArray, levels, params);\n _invertByLevel(DIR_RTL + 1, charArray, sourceToTargetMap, levels, params);\n _invertByLevel(DIR_RTL, charArray, sourceToTargetMap, levels, params);\n return charArray.join(\"\");\n };\n\n // doBidiReorder( text, sourceToTargetMap, levels )\n // Performs Bidi reordering by implementing Unicode Bidi algorithm.\n // Returns reordered string\n // @text [String]:\n // - input string to be reordered, this is input parameter\n // $sourceToTargetMap [Array] (optional)\n // - resultant mapping between input and output strings, this is output parameter\n // $levels [Array] (optional)\n // - array of calculated Bidi levels, , this is output parameter\n this.__bidiEngine__.doBidiReorder = function(\n text,\n sourceToTargetMap,\n levels\n ) {\n _init(text, sourceToTargetMap);\n if (!_isInVisual && _isOutVisual && !_isOutRtl) {\n // LLTR->VLTR, LRTL->VLTR\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && _isOutVisual && _isInRtl ^ _isOutRtl) {\n // VRTL->VLTR, VLTR->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _invertString(text, sourceToTargetMap, levels);\n } else if (!_isInVisual && _isOutVisual && _isOutRtl) {\n // LLTR->VRTL, LRTL->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (_isInVisual && !_isInRtl && !_isOutVisual && !_isOutRtl) {\n // VLTR->LLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // VLTR->LRTL, VRTL->LLTR\n text = _invertString(text, sourceToTargetMap);\n if (_isInRtl) {\n //LLTR -> VLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else {\n //LRTL -> VRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n }\n } else if (_isInVisual && _isInRtl && !_isOutVisual && _isOutRtl) {\n // VRTL->LRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (!_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // LRTL->LLTR, LLTR->LRTL\n var isSymmetricSwappingOrig = _isSymmetricSwapping;\n if (_isInRtl) {\n //LRTL->LLTR\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n _dir = DIR_LTR;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n } else {\n //LLTR->LRTL\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n _dir = DIR_RTL;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n text = _invertString(text, sourceToTargetMap);\n }\n }\n return text;\n };\n\n /**\n * @name setOptions( options )\n * @function\n * Sets options for Bidi conversion\n * @param {Object}:\n * - isInputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isInputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong character of input string)\n * - isOutputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isOutputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong characterof input string)\n * - isSymmetricSwapping {boolean} (defaults to false): allowed values true(needs symmetric swapping), false (no need in symmetric swapping),\n */\n this.__bidiEngine__.setOptions = function(options) {\n if (options) {\n _isInVisual = options.isInputVisual;\n _isOutVisual = options.isOutputVisual;\n _isInRtl = options.isInputRtl;\n _isOutRtl = options.isOutputRtl;\n _isSymmetricSwapping = options.isSymmetricSwapping;\n }\n };\n\n this.__bidiEngine__.setOptions(options);\n return this.__bidiEngine__;\n };\n\n var _bidiUnicodeTypes = bidiUnicodeTypes;\n\n var bidiEngine = new jsPDF.__bidiEngine__({ isInputVisual: true });\n\n var bidiEngineFunction = function(args) {\n var text = args.text;\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n var lang = options.lang;\n var tmpText = [];\n\n options.isInputVisual =\n typeof options.isInputVisual === \"boolean\" ? options.isInputVisual : true;\n bidiEngine.setOptions(options);\n\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[i]) === \"[object Array]\") {\n tmpText.push([\n bidiEngine.doBidiReorder(text[i][0]),\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push([bidiEngine.doBidiReorder(text[i])]);\n }\n }\n args.text = tmpText;\n } else {\n args.text = bidiEngine.doBidiReorder(text);\n }\n bidiEngine.setOptions({ isInputVisual: true });\n };\n\n jsPDF.API.events.push([\"postProcessText\", bidiEngineFunction]);\n})(jsPDF);\n","/* eslint-disable no-control-regex */\n/************************************************\n * Title : custom font *\n * Start Data : 2017. 01. 22. *\n * Comment : TEXT API *\n ************************************************/\n\n/******************************\n * jsPDF extension API Design *\n * ****************************/\n\nimport { jsPDF } from \"../jspdf.js\";\n\njsPDF.API.TTFFont = (function() {\n /************************************************************************/\n /* function : open */\n /* comment : Decode the encoded ttf content and create a TTFFont object. */\n /************************************************************************/\n TTFFont.open = function(file) {\n return new TTFFont(file);\n };\n /***************************************************************/\n /* function : TTFFont gernerator */\n /* comment : Decode TTF contents are parsed, Data, */\n /* Subset object is created, and registerTTF function is called.*/\n /***************************************************************/\n function TTFFont(rawData) {\n var data;\n this.rawData = rawData;\n data = this.contents = new Data(rawData);\n this.contents.pos = 4;\n if (data.readString(4) === \"ttcf\") {\n throw new Error(\"TTCF not supported.\");\n } else {\n data.pos = 0;\n this.parse();\n this.subset = new Subset(this);\n this.registerTTF();\n }\n }\n /********************************************************/\n /* function : parse */\n /* comment : TTF Parses the file contents by each table.*/\n /********************************************************/\n TTFFont.prototype.parse = function() {\n this.directory = new Directory(this.contents);\n this.head = new HeadTable(this);\n this.name = new NameTable(this);\n this.cmap = new CmapTable(this);\n this.toUnicode = {};\n this.hhea = new HheaTable(this);\n this.maxp = new MaxpTable(this);\n this.hmtx = new HmtxTable(this);\n this.post = new PostTable(this);\n this.os2 = new OS2Table(this);\n this.loca = new LocaTable(this);\n this.glyf = new GlyfTable(this);\n this.ascender =\n (this.os2.exists && this.os2.ascender) || this.hhea.ascender;\n this.decender =\n (this.os2.exists && this.os2.decender) || this.hhea.decender;\n this.lineGap = (this.os2.exists && this.os2.lineGap) || this.hhea.lineGap;\n return (this.bbox = [\n this.head.xMin,\n this.head.yMin,\n this.head.xMax,\n this.head.yMax\n ]);\n };\n /***************************************************************/\n /* function : registerTTF */\n /* comment : Get the value to assign pdf font descriptors. */\n /***************************************************************/\n TTFFont.prototype.registerTTF = function() {\n var e, hi, low, raw, _ref;\n this.scaleFactor = 1000.0 / this.head.unitsPerEm;\n this.bbox = function() {\n var _i, _len, _ref, _results;\n _ref = this.bbox;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n e = _ref[_i];\n _results.push(Math.round(e * this.scaleFactor));\n }\n return _results;\n }.call(this);\n this.stemV = 0;\n if (this.post.exists) {\n raw = this.post.italic_angle;\n hi = raw >> 16;\n low = raw & 0xff;\n if ((hi & 0x8000) !== 0) {\n hi = -((hi ^ 0xffff) + 1);\n }\n this.italicAngle = +(\"\" + hi + \".\" + low);\n } else {\n this.italicAngle = 0;\n }\n this.ascender = Math.round(this.ascender * this.scaleFactor);\n this.decender = Math.round(this.decender * this.scaleFactor);\n this.lineGap = Math.round(this.lineGap * this.scaleFactor);\n this.capHeight = (this.os2.exists && this.os2.capHeight) || this.ascender;\n this.xHeight = (this.os2.exists && this.os2.xHeight) || 0;\n this.familyClass = ((this.os2.exists && this.os2.familyClass) || 0) >> 8;\n this.isSerif =\n (_ref = this.familyClass) === 1 ||\n _ref === 2 ||\n _ref === 3 ||\n _ref === 4 ||\n _ref === 5 ||\n _ref === 7;\n this.isScript = this.familyClass === 10;\n this.flags = 0;\n if (this.post.isFixedPitch) {\n this.flags |= 1 << 0;\n }\n if (this.isSerif) {\n this.flags |= 1 << 1;\n }\n if (this.isScript) {\n this.flags |= 1 << 3;\n }\n if (this.italicAngle !== 0) {\n this.flags |= 1 << 6;\n }\n this.flags |= 1 << 5;\n if (!this.cmap.unicode) {\n throw new Error(\"No unicode cmap for font\");\n }\n };\n TTFFont.prototype.characterToGlyph = function(character) {\n var _ref;\n return (\n ((_ref = this.cmap.unicode) != null ? _ref.codeMap[character] : void 0) ||\n 0\n );\n };\n TTFFont.prototype.widthOfGlyph = function(glyph) {\n var scale;\n scale = 1000.0 / this.head.unitsPerEm;\n return this.hmtx.forGlyph(glyph).advance * scale;\n };\n TTFFont.prototype.widthOfString = function(string, size, charSpace) {\n var charCode, i, scale, width, _ref;\n string = \"\" + string;\n width = 0;\n for (\n i = 0, _ref = string.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n charCode = string.charCodeAt(i);\n width +=\n this.widthOfGlyph(this.characterToGlyph(charCode)) +\n charSpace * (1000 / size) || 0;\n }\n scale = size / 1000;\n return width * scale;\n };\n TTFFont.prototype.lineHeight = function(size, includeGap) {\n var gap;\n if (includeGap == null) {\n includeGap = false;\n }\n gap = includeGap ? this.lineGap : 0;\n return ((this.ascender + gap - this.decender) / 1000) * size;\n };\n return TTFFont;\n})();\n\n/************************************************************************************************/\n/* function : Data */\n/* comment : The ttf data decoded and stored in an array is read and written to the Data object.*/\n/************************************************************************************************/\nvar Data = (function() {\n function Data(data) {\n this.data = data != null ? data : [];\n this.pos = 0;\n this.length = this.data.length;\n }\n Data.prototype.readByte = function() {\n return this.data[this.pos++];\n };\n Data.prototype.writeByte = function(byte) {\n return (this.data[this.pos++] = byte);\n };\n Data.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.readByte() * 0x1000000;\n b2 = this.readByte() << 16;\n b3 = this.readByte() << 8;\n b4 = this.readByte();\n return b1 + b2 + b3 + b4;\n };\n Data.prototype.writeUInt32 = function(val) {\n this.writeByte((val >>> 24) & 0xff);\n this.writeByte((val >> 16) & 0xff);\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt32 = function() {\n var int;\n int = this.readUInt32();\n if (int >= 0x80000000) {\n return int - 0x100000000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt32 = function(val) {\n if (val < 0) {\n val += 0x100000000;\n }\n return this.writeUInt32(val);\n };\n Data.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.readByte() << 8;\n b2 = this.readByte();\n return b1 | b2;\n };\n Data.prototype.writeUInt16 = function(val) {\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt16 = function() {\n var int;\n int = this.readUInt16();\n if (int >= 0x8000) {\n return int - 0x10000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt16 = function(val) {\n if (val < 0) {\n val += 0x10000;\n }\n return this.writeUInt16(val);\n };\n Data.prototype.readString = function(length) {\n var i, ret;\n ret = [];\n for (\n i = 0;\n 0 <= length ? i < length : i > length;\n i = 0 <= length ? ++i : --i\n ) {\n ret[i] = String.fromCharCode(this.readByte());\n }\n return ret.join(\"\");\n };\n Data.prototype.writeString = function(val) {\n var i, _ref, _results;\n _results = [];\n for (\n i = 0, _ref = val.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n _results.push(this.writeByte(val.charCodeAt(i)));\n }\n return _results;\n };\n /*Data.prototype.stringAt = function (pos, length) {\n this.pos = pos;\n return this.readString(length);\n };*/\n Data.prototype.readShort = function() {\n return this.readInt16();\n };\n Data.prototype.writeShort = function(val) {\n return this.writeInt16(val);\n };\n Data.prototype.readLongLong = function() {\n var b1, b2, b3, b4, b5, b6, b7, b8;\n b1 = this.readByte();\n b2 = this.readByte();\n b3 = this.readByte();\n b4 = this.readByte();\n b5 = this.readByte();\n b6 = this.readByte();\n b7 = this.readByte();\n b8 = this.readByte();\n if (b1 & 0x80) {\n return (\n ((b1 ^ 0xff) * 0x100000000000000 +\n (b2 ^ 0xff) * 0x1000000000000 +\n (b3 ^ 0xff) * 0x10000000000 +\n (b4 ^ 0xff) * 0x100000000 +\n (b5 ^ 0xff) * 0x1000000 +\n (b6 ^ 0xff) * 0x10000 +\n (b7 ^ 0xff) * 0x100 +\n (b8 ^ 0xff) +\n 1) *\n -1\n );\n }\n return (\n b1 * 0x100000000000000 +\n b2 * 0x1000000000000 +\n b3 * 0x10000000000 +\n b4 * 0x100000000 +\n b5 * 0x1000000 +\n b6 * 0x10000 +\n b7 * 0x100 +\n b8\n );\n };\n Data.prototype.writeLongLong = function(val) {\n var high, low;\n high = Math.floor(val / 0x100000000);\n low = val & 0xffffffff;\n this.writeByte((high >> 24) & 0xff);\n this.writeByte((high >> 16) & 0xff);\n this.writeByte((high >> 8) & 0xff);\n this.writeByte(high & 0xff);\n this.writeByte((low >> 24) & 0xff);\n this.writeByte((low >> 16) & 0xff);\n this.writeByte((low >> 8) & 0xff);\n return this.writeByte(low & 0xff);\n };\n Data.prototype.readInt = function() {\n return this.readInt32();\n };\n Data.prototype.writeInt = function(val) {\n return this.writeInt32(val);\n };\n /*Data.prototype.slice = function (start, end) {\n return this.data.slice(start, end);\n };*/\n Data.prototype.read = function(bytes) {\n var buf, i;\n buf = [];\n for (\n i = 0;\n 0 <= bytes ? i < bytes : i > bytes;\n i = 0 <= bytes ? ++i : --i\n ) {\n buf.push(this.readByte());\n }\n return buf;\n };\n Data.prototype.write = function(bytes) {\n var byte, i, _len, _results;\n _results = [];\n for (i = 0, _len = bytes.length; i < _len; i++) {\n byte = bytes[i];\n _results.push(this.writeByte(byte));\n }\n return _results;\n };\n return Data;\n})();\n\nvar Directory = (function() {\n var checksum;\n\n /*****************************************************************************************************/\n /* function : Directory generator */\n /* comment : Initialize the offset, tag, length, and checksum for each table for the font to be used.*/\n /*****************************************************************************************************/\n function Directory(data) {\n var entry, i, _ref;\n this.scalarType = data.readInt();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n this.tables = {};\n for (\n i = 0, _ref = this.tableCount;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n entry = {\n tag: data.readString(4),\n checksum: data.readInt(),\n offset: data.readInt(),\n length: data.readInt()\n };\n this.tables[entry.tag] = entry;\n }\n }\n /********************************************************************************************************/\n /* function : encode */\n /* comment : It encodes and stores the font table object and information used for the directory object. */\n /********************************************************************************************************/\n Directory.prototype.encode = function(tables) {\n var adjustment,\n directory,\n directoryLength,\n entrySelector,\n headOffset,\n log2,\n offset,\n rangeShift,\n searchRange,\n sum,\n table,\n tableCount,\n tableData,\n tag;\n tableCount = Object.keys(tables).length;\n log2 = Math.log(2);\n searchRange = Math.floor(Math.log(tableCount) / log2) * 16;\n entrySelector = Math.floor(searchRange / log2);\n rangeShift = tableCount * 16 - searchRange;\n directory = new Data();\n directory.writeInt(this.scalarType);\n directory.writeShort(tableCount);\n directory.writeShort(searchRange);\n directory.writeShort(entrySelector);\n directory.writeShort(rangeShift);\n directoryLength = tableCount * 16;\n offset = directory.pos + directoryLength;\n headOffset = null;\n tableData = [];\n for (tag in tables) {\n table = tables[tag];\n directory.writeString(tag);\n directory.writeInt(checksum(table));\n directory.writeInt(offset);\n directory.writeInt(table.length);\n tableData = tableData.concat(table);\n if (tag === \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n while (offset % 4) {\n tableData.push(0);\n offset++;\n }\n }\n directory.write(tableData);\n sum = checksum(directory.data);\n adjustment = 0xb1b0afba - sum;\n directory.pos = headOffset + 8;\n directory.writeUInt32(adjustment);\n return directory.data;\n };\n /***************************************************************/\n /* function : checksum */\n /* comment : Duplicate the table for the tag. */\n /***************************************************************/\n checksum = function(data) {\n var i, sum, tmp, _ref;\n data = __slice.call(data);\n while (data.length % 4) {\n data.push(0);\n }\n tmp = new Data(data);\n sum = 0;\n for (i = 0, _ref = data.length; i < _ref; i = i += 4) {\n sum += tmp.readUInt32();\n }\n return sum & 0xffffffff;\n };\n return Directory;\n})();\n\nvar Table,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) {\n for (var key in parent) {\n if (__hasProp.call(parent, key)) child[key] = parent[key];\n }\n\n function ctor() {\n this.constructor = child;\n }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n child.__super__ = parent.prototype;\n return child;\n };\n\n/***************************************************************/\n/* function : Table */\n/* comment : Save info for each table, and parse the table. */\n/***************************************************************/\nTable = (function() {\n function Table(file) {\n var info;\n this.file = file;\n info = this.file.directory.tables[this.tag];\n this.exists = !!info;\n if (info) {\n (this.offset = info.offset), (this.length = info.length);\n this.parse(this.file.contents);\n }\n }\n Table.prototype.parse = function() {};\n Table.prototype.encode = function() {};\n Table.prototype.raw = function() {\n if (!this.exists) {\n return null;\n }\n this.file.contents.pos = this.offset;\n return this.file.contents.read(this.length);\n };\n return Table;\n})();\n\nvar HeadTable = (function(_super) {\n __extends(HeadTable, _super);\n\n function HeadTable() {\n return HeadTable.__super__.constructor.apply(this, arguments);\n }\n HeadTable.prototype.tag = \"head\";\n HeadTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.revision = data.readInt();\n this.checkSumAdjustment = data.readInt();\n this.magicNumber = data.readInt();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.readLongLong();\n this.modified = data.readLongLong();\n this.xMin = data.readShort();\n this.yMin = data.readShort();\n this.xMax = data.readShort();\n this.yMax = data.readShort();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort();\n this.indexToLocFormat = data.readShort();\n return (this.glyphDataFormat = data.readShort());\n };\n HeadTable.prototype.encode = function(indexToLocFormat) {\n var table;\n table = new Data();\n table.writeInt(this.version);\n table.writeInt(this.revision);\n table.writeInt(this.checkSumAdjustment);\n table.writeInt(this.magicNumber);\n table.writeShort(this.flags);\n table.writeShort(this.unitsPerEm);\n table.writeLongLong(this.created);\n table.writeLongLong(this.modified);\n table.writeShort(this.xMin);\n table.writeShort(this.yMin);\n table.writeShort(this.xMax);\n table.writeShort(this.yMax);\n table.writeShort(this.macStyle);\n table.writeShort(this.lowestRecPPEM);\n table.writeShort(this.fontDirectionHint);\n table.writeShort(indexToLocFormat);\n table.writeShort(this.glyphDataFormat);\n return table.data;\n };\n return HeadTable;\n})(Table);\n\n/************************************************************************************/\n/* function : CmapEntry */\n/* comment : Cmap Initializes and encodes object information (required by pdf spec).*/\n/************************************************************************************/\nvar CmapEntry = (function() {\n function CmapEntry(data, offset) {\n var code,\n count,\n endCode,\n glyphId,\n glyphIds,\n i,\n idDelta,\n idRangeOffset,\n index,\n saveOffset,\n segCount,\n segCountX2,\n start,\n startCode,\n tail,\n _j,\n _k,\n _len;\n this.platformID = data.readUInt16();\n this.encodingID = data.readShort();\n this.offset = offset + data.readInt();\n saveOffset = data.pos;\n data.pos = this.offset;\n this.format = data.readUInt16();\n this.length = data.readUInt16();\n this.language = data.readUInt16();\n this.isUnicode =\n (this.platformID === 3 && this.encodingID === 1 && this.format === 4) ||\n (this.platformID === 0 && this.format === 4);\n this.codeMap = {};\n switch (this.format) {\n case 0:\n for (i = 0; i < 256; ++i) {\n this.codeMap[i] = data.readByte();\n }\n break;\n case 4:\n segCountX2 = data.readUInt16();\n segCount = segCountX2 / 2;\n data.pos += 6;\n endCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n data.pos += 2;\n startCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idDelta = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idRangeOffset = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n count = (this.length - data.pos + this.offset) / 2;\n glyphIds = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= count ? _j < count : _j > count;\n i = 0 <= count ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n for (i = _j = 0, _len = endCode.length; _j < _len; i = ++_j) {\n tail = endCode[i];\n start = startCode[i];\n for (\n code = _k = start;\n start <= tail ? _k <= tail : _k >= tail;\n code = start <= tail ? ++_k : --_k\n ) {\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n index = idRangeOffset[i] / 2 + (code - start) - (segCount - i);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n this.codeMap[code] = glyphId & 0xffff;\n }\n }\n }\n data.pos = saveOffset;\n }\n CmapEntry.encode = function(charmap, encoding) {\n var charMap,\n code,\n codeMap,\n codes,\n delta,\n deltas,\n diff,\n endCode,\n endCodes,\n entrySelector,\n glyphIDs,\n i,\n id,\n indexes,\n last,\n map,\n nextID,\n offset,\n old,\n rangeOffsets,\n rangeShift,\n searchRange,\n segCount,\n segCountX2,\n startCode,\n startCodes,\n startGlyph,\n subtable,\n _i,\n _j,\n _k,\n _l,\n _len,\n _len1,\n _len2,\n _len3,\n _len4,\n _len5,\n _len6,\n _len7,\n _m,\n _n,\n _name,\n _o,\n _p,\n _q;\n subtable = new Data();\n codes = Object.keys(charmap).sort(function(a, b) {\n return a - b;\n });\n switch (encoding) {\n case \"macroman\":\n id = 0;\n indexes = (function() {\n var _results = [];\n for (i = 0; i < 256; ++i) {\n _results.push(0);\n }\n return _results;\n })();\n map = {\n 0: 0\n };\n codeMap = {};\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (map[(_name = charmap[code])] == null) {\n map[_name] = ++id;\n }\n codeMap[code] = {\n old: charmap[code],\n new: map[charmap[code]]\n };\n indexes[code] = map[charmap[code]];\n }\n subtable.writeUInt16(1);\n subtable.writeUInt16(0);\n subtable.writeUInt32(12);\n subtable.writeUInt16(0);\n subtable.writeUInt16(262);\n subtable.writeUInt16(0);\n subtable.write(indexes);\n return {\n charMap: codeMap,\n subtable: subtable.data,\n maxGlyphID: id + 1\n };\n case \"unicode\":\n startCodes = [];\n endCodes = [];\n nextID = 0;\n map = {};\n charMap = {};\n last = diff = null;\n for (_j = 0, _len1 = codes.length; _j < _len1; _j++) {\n code = codes[_j];\n old = charmap[code];\n if (map[old] == null) {\n map[old] = ++nextID;\n }\n charMap[code] = {\n old: old,\n new: map[old]\n };\n delta = map[old] - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xffff);\n startCodes.push(0xffff);\n segCount = startCodes.length;\n segCountX2 = segCount * 2;\n searchRange = 2 * Math.pow(Math.log(segCount) / Math.LN2, 2);\n entrySelector = Math.log(searchRange / 2) / Math.LN2;\n rangeShift = 2 * segCount - searchRange;\n deltas = [];\n rangeOffsets = [];\n glyphIDs = [];\n for (i = _k = 0, _len2 = startCodes.length; _k < _len2; i = ++_k) {\n startCode = startCodes[i];\n endCode = endCodes[i];\n if (startCode === 0xffff) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n startGlyph = charMap[startCode][\"new\"];\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIDs.length + segCount - i));\n for (\n code = _l = startCode;\n startCode <= endCode ? _l <= endCode : _l >= endCode;\n code = startCode <= endCode ? ++_l : --_l\n ) {\n glyphIDs.push(charMap[code][\"new\"]);\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n subtable.writeUInt16(3);\n subtable.writeUInt16(1);\n subtable.writeUInt32(12);\n subtable.writeUInt16(4);\n subtable.writeUInt16(16 + segCount * 8 + glyphIDs.length * 2);\n subtable.writeUInt16(0);\n subtable.writeUInt16(segCountX2);\n subtable.writeUInt16(searchRange);\n subtable.writeUInt16(entrySelector);\n subtable.writeUInt16(rangeShift);\n for (_m = 0, _len3 = endCodes.length; _m < _len3; _m++) {\n code = endCodes[_m];\n subtable.writeUInt16(code);\n }\n subtable.writeUInt16(0);\n for (_n = 0, _len4 = startCodes.length; _n < _len4; _n++) {\n code = startCodes[_n];\n subtable.writeUInt16(code);\n }\n for (_o = 0, _len5 = deltas.length; _o < _len5; _o++) {\n delta = deltas[_o];\n subtable.writeUInt16(delta);\n }\n for (_p = 0, _len6 = rangeOffsets.length; _p < _len6; _p++) {\n offset = rangeOffsets[_p];\n subtable.writeUInt16(offset);\n }\n for (_q = 0, _len7 = glyphIDs.length; _q < _len7; _q++) {\n id = glyphIDs[_q];\n subtable.writeUInt16(id);\n }\n return {\n charMap: charMap,\n subtable: subtable.data,\n maxGlyphID: nextID + 1\n };\n }\n };\n return CmapEntry;\n})();\n\nvar CmapTable = (function(_super) {\n __extends(CmapTable, _super);\n\n function CmapTable() {\n return CmapTable.__super__.constructor.apply(this, arguments);\n }\n CmapTable.prototype.tag = \"cmap\";\n CmapTable.prototype.parse = function(data) {\n var entry, i, tableCount;\n data.pos = this.offset;\n this.version = data.readUInt16();\n tableCount = data.readUInt16();\n this.tables = [];\n this.unicode = null;\n for (\n i = 0;\n 0 <= tableCount ? i < tableCount : i > tableCount;\n i = 0 <= tableCount ? ++i : --i\n ) {\n entry = new CmapEntry(data, this.offset);\n this.tables.push(entry);\n if (entry.isUnicode) {\n if (this.unicode == null) {\n this.unicode = entry;\n }\n }\n }\n return true;\n };\n /*************************************************************************/\n /* function : encode */\n /* comment : Encode the cmap table corresponding to the input character. */\n /*************************************************************************/\n CmapTable.encode = function(charmap, encoding) {\n var result, table;\n if (encoding == null) {\n encoding = \"macroman\";\n }\n result = CmapEntry.encode(charmap, encoding);\n table = new Data();\n table.writeUInt16(0);\n table.writeUInt16(1);\n result.table = table.data.concat(result.subtable);\n return result;\n };\n return CmapTable;\n})(Table);\n\nvar HheaTable = (function(_super) {\n __extends(HheaTable, _super);\n\n function HheaTable() {\n return HheaTable.__super__.constructor.apply(this, arguments);\n }\n HheaTable.prototype.tag = \"hhea\";\n HheaTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.ascender = data.readShort();\n this.decender = data.readShort();\n this.lineGap = data.readShort();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort();\n this.minRightSideBearing = data.readShort();\n this.xMaxExtent = data.readShort();\n this.caretSlopeRise = data.readShort();\n this.caretSlopeRun = data.readShort();\n this.caretOffset = data.readShort();\n data.pos += 4 * 2;\n this.metricDataFormat = data.readShort();\n return (this.numberOfMetrics = data.readUInt16());\n };\n /*HheaTable.prototype.encode = function (ids) {\n var i, table, _i, _ref;\n table = new Data;\n table.writeInt(this.version);\n table.writeShort(this.ascender);\n table.writeShort(this.decender);\n table.writeShort(this.lineGap);\n table.writeShort(this.advanceWidthMax);\n table.writeShort(this.minLeftSideBearing);\n table.writeShort(this.minRightSideBearing);\n table.writeShort(this.xMaxExtent);\n table.writeShort(this.caretSlopeRise);\n table.writeShort(this.caretSlopeRun);\n table.writeShort(this.caretOffset);\n for (i = _i = 0, _ref = 4 * 2; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n table.writeByte(0);\n }\n table.writeShort(this.metricDataFormat);\n table.writeUInt16(ids.length);\n return table.data;\n };*/\n return HheaTable;\n})(Table);\n\nvar OS2Table = (function(_super) {\n __extends(OS2Table, _super);\n\n function OS2Table() {\n return OS2Table.__super__.constructor.apply(this, arguments);\n }\n OS2Table.prototype.tag = \"OS/2\";\n OS2Table.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readUInt16();\n this.averageCharWidth = data.readShort();\n this.weightClass = data.readUInt16();\n this.widthClass = data.readUInt16();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort();\n this.ySubscriptYSize = data.readShort();\n this.ySubscriptXOffset = data.readShort();\n this.ySubscriptYOffset = data.readShort();\n this.ySuperscriptXSize = data.readShort();\n this.ySuperscriptYSize = data.readShort();\n this.ySuperscriptXOffset = data.readShort();\n this.ySuperscriptYOffset = data.readShort();\n this.yStrikeoutSize = data.readShort();\n this.yStrikeoutPosition = data.readShort();\n this.familyClass = data.readShort();\n this.panose = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 10; ++i) {\n _results.push(data.readByte());\n }\n return _results;\n })();\n this.charRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 4; ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n if (this.version > 0) {\n this.ascent = data.readShort();\n this.descent = data.readShort();\n this.lineGap = data.readShort();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 2; i = ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n return (this.maxContext = data.readShort());\n }\n }\n };\n /*OS2Table.prototype.encode = function () {\n return this.raw();\n };*/\n return OS2Table;\n})(Table);\n\nvar PostTable = (function(_super) {\n var POSTSCRIPT_GLYPHS;\n __extends(PostTable, _super);\n\n function PostTable() {\n return PostTable.__super__.constructor.apply(this, arguments);\n }\n PostTable.prototype.tag = \"post\";\n PostTable.prototype.parse = function(data) {\n var length, numberOfGlyphs, _results;\n data.pos = this.offset;\n this.format = data.readInt();\n this.italicAngle = data.readInt();\n this.underlinePosition = data.readShort();\n this.underlineThickness = data.readShort();\n this.isFixedPitch = data.readInt();\n this.minMemType42 = data.readInt();\n this.maxMemType42 = data.readInt();\n this.minMemType1 = data.readInt();\n this.maxMemType1 = data.readInt();\n switch (this.format) {\n case 0x00010000:\n break;\n case 0x00020000:\n numberOfGlyphs = data.readUInt16();\n this.glyphNameIndex = [];\n var i;\n for (\n i = 0;\n 0 <= numberOfGlyphs ? i < numberOfGlyphs : i > numberOfGlyphs;\n i = 0 <= numberOfGlyphs ? ++i : --i\n ) {\n this.glyphNameIndex.push(data.readUInt16());\n }\n this.names = [];\n _results = [];\n while (data.pos < this.offset + this.length) {\n length = data.readByte();\n _results.push(this.names.push(data.readString(length)));\n }\n return _results;\n case 0x00025000:\n numberOfGlyphs = data.readUInt16();\n return (this.offsets = data.read(numberOfGlyphs));\n case 0x00030000:\n break;\n case 0x00040000:\n return (this.map = function() {\n var _j, _ref, _results1;\n _results1 = [];\n for (\n i = _j = 0, _ref = this.file.maxp.numGlyphs;\n 0 <= _ref ? _j < _ref : _j > _ref;\n i = 0 <= _ref ? ++_j : --_j\n ) {\n _results1.push(data.readUInt32());\n }\n return _results1;\n }.call(this));\n }\n };\n /*PostTable.prototype.glyphFor = function (code) {\n var index;\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || '.notdef';\n case 0x00020000:\n index = this.glyphNameIndex[code];\n if (index <= 257) {\n return POSTSCRIPT_GLYPHS[index];\n }\n else {\n return this.names[index - 258] || '.notdef';\n }\n break;\n case 0x00025000:\n return POSTSCRIPT_GLYPHS[code + this.offsets[code]] || '.notdef';\n case 0x00030000:\n return '.notdef';\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n };*/\n /*PostTable.prototype.encode = function (mapping) {\n var id, index, indexes, position, post, raw, string, strings, table, _i, _j, _k, _len, _len1, _len2;\n if (!this.exists) {\n return null;\n }\n raw = this.raw();\n if (this.format === 0x00030000) {\n return raw;\n }\n table = new Data(raw.slice(0, 32));\n table.writeUInt32(0x00020000);\n table.pos = 32;\n indexes = [];\n strings = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n post = this.glyphFor(id);\n position = POSTSCRIPT_GLYPHS.indexOf(post);\n if (position !== -1) {\n indexes.push(position);\n }\n else {\n indexes.push(257 + strings.length);\n strings.push(post);\n }\n }\n table.writeUInt16(Object.keys(mapping).length);\n for (_j = 0, _len1 = indexes.length; _j < _len1; _j++) {\n index = indexes[_j];\n table.writeUInt16(index);\n }\n for (_k = 0, _len2 = strings.length; _k < _len2; _k++) {\n string = strings[_k];\n table.writeByte(string.length);\n table.writeString(string);\n }\n return table.data;\n };*/\n POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent\\nampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash\\nzero one two three four five six seven eight nine colon semicolon less equal greater\\nquestion at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\\nbracketleft backslash bracketright asciicircum underscore grave\\na b c d e f g h i j k l m n o p q r s t u v w x y z\\nbraceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis\\nUdieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave\\necircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve\\nocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent\\nsterling section bullet paragraph germandbls registered copyright trademark acute\\ndieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu\\npartialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash\\nquestiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft\\nguillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash\\nquotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis\\nfraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered\\nquotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis\\nEgrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute\\nUcircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla\\nhungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth\\neth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior\\nonehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla\\nCacute cacute Ccaron ccaron dcroat\".split(\n /\\s+/g\n );\n return PostTable;\n})(Table);\n\n/*********************************************************************************************************/\n/* function : NameEntry */\n/* comment : Store copyright information, platformID, encodingID, and languageID in the NameEntry object.*/\n/*********************************************************************************************************/\nvar NameEntry = (function() {\n function NameEntry(raw, entry) {\n this.raw = raw;\n this.length = raw.length;\n this.platformID = entry.platformID;\n this.encodingID = entry.encodingID;\n this.languageID = entry.languageID;\n }\n return NameEntry;\n})();\n\nvar NameTable = (function(_super) {\n var subsetTag;\n __extends(NameTable, _super);\n\n function NameTable() {\n return NameTable.__super__.constructor.apply(this, arguments);\n }\n NameTable.prototype.tag = \"name\";\n NameTable.prototype.parse = function(data) {\n var count,\n entries,\n entry,\n i,\n name,\n stringOffset,\n strings,\n text,\n _j,\n _len,\n _name;\n data.pos = this.offset;\n data.readShort(); //format\n count = data.readShort();\n stringOffset = data.readShort();\n entries = [];\n for (\n i = 0;\n 0 <= count ? i < count : i > count;\n i = 0 <= count ? ++i : --i\n ) {\n entries.push({\n platformID: data.readShort(),\n encodingID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: this.offset + stringOffset + data.readShort()\n });\n }\n strings = {};\n for (i = _j = 0, _len = entries.length; _j < _len; i = ++_j) {\n entry = entries[i];\n data.pos = entry.offset;\n text = data.readString(entry.length);\n name = new NameEntry(text, entry);\n if (strings[(_name = entry.nameID)] == null) {\n strings[_name] = [];\n }\n strings[entry.nameID].push(name);\n }\n this.strings = strings;\n this.copyright = strings[0];\n this.fontFamily = strings[1];\n this.fontSubfamily = strings[2];\n this.uniqueSubfamily = strings[3];\n this.fontName = strings[4];\n this.version = strings[5];\n try {\n this.postscriptName = strings[6][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n } catch (e) {\n this.postscriptName = strings[4][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n }\n this.trademark = strings[7];\n this.manufacturer = strings[8];\n this.designer = strings[9];\n this.description = strings[10];\n this.vendorUrl = strings[11];\n this.designerUrl = strings[12];\n this.license = strings[13];\n this.licenseUrl = strings[14];\n this.preferredFamily = strings[15];\n this.preferredSubfamily = strings[17];\n this.compatibleFull = strings[18];\n return (this.sampleText = strings[19]);\n };\n subsetTag = \"AAAAAA\";\n /*NameTable.prototype.encode = function () {\n var id, list, nameID, nameTable, postscriptName, strCount, strTable, string, strings, table, val, _i, _len, _ref;\n strings = {};\n _ref = this.strings;\n for (id in _ref) {\n val = _ref[id];\n strings[id] = val;\n }\n postscriptName = new NameEntry(\"\" + subsetTag + \"+\" + this.postscriptName, {\n platformID: 1\n , encodingID: 0\n , languageID: 0\n });\n strings[6] = [postscriptName];\n subsetTag = successorOf(subsetTag);\n strCount = 0;\n for (id in strings) {\n list = strings[id];\n if (list != null) {\n strCount += list.length;\n }\n }\n table = new Data;\n strTable = new Data;\n table.writeShort(0);\n table.writeShort(strCount);\n table.writeShort(6 + 12 * strCount);\n for (nameID in strings) {\n list = strings[nameID];\n if (list != null) {\n for (_i = 0, _len = list.length; _i < _len; _i++) {\n string = list[_i];\n table.writeShort(string.platformID);\n table.writeShort(string.encodingID);\n table.writeShort(string.languageID);\n table.writeShort(nameID);\n table.writeShort(string.length);\n table.writeShort(strTable.pos);\n strTable.writeString(string.raw);\n }\n }\n }\n return nameTable = {\n postscriptName: postscriptName.raw\n , table: table.data.concat(strTable.data)\n };\n };*/\n return NameTable;\n})(Table);\n\nvar MaxpTable = (function(_super) {\n __extends(MaxpTable, _super);\n\n function MaxpTable() {\n return MaxpTable.__super__.constructor.apply(this, arguments);\n }\n MaxpTable.prototype.tag = \"maxp\";\n MaxpTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.numGlyphs = data.readUInt16();\n this.maxPoints = data.readUInt16();\n this.maxContours = data.readUInt16();\n this.maxCompositePoints = data.readUInt16();\n this.maxComponentContours = data.readUInt16();\n this.maxZones = data.readUInt16();\n this.maxTwilightPoints = data.readUInt16();\n this.maxStorage = data.readUInt16();\n this.maxFunctionDefs = data.readUInt16();\n this.maxInstructionDefs = data.readUInt16();\n this.maxStackElements = data.readUInt16();\n this.maxSizeOfInstructions = data.readUInt16();\n this.maxComponentElements = data.readUInt16();\n return (this.maxComponentDepth = data.readUInt16());\n };\n /*MaxpTable.prototype.encode = function (ids) {\n var table;\n table = new Data;\n table.writeInt(this.version);\n table.writeUInt16(ids.length);\n table.writeUInt16(this.maxPoints);\n table.writeUInt16(this.maxContours);\n table.writeUInt16(this.maxCompositePoints);\n table.writeUInt16(this.maxComponentContours);\n table.writeUInt16(this.maxZones);\n table.writeUInt16(this.maxTwilightPoints);\n table.writeUInt16(this.maxStorage);\n table.writeUInt16(this.maxFunctionDefs);\n table.writeUInt16(this.maxInstructionDefs);\n table.writeUInt16(this.maxStackElements);\n table.writeUInt16(this.maxSizeOfInstructions);\n table.writeUInt16(this.maxComponentElements);\n table.writeUInt16(this.maxComponentDepth);\n return table.data;\n };*/\n return MaxpTable;\n})(Table);\n\nvar HmtxTable = (function(_super) {\n __extends(HmtxTable, _super);\n\n function HmtxTable() {\n return HmtxTable.__super__.constructor.apply(this, arguments);\n }\n HmtxTable.prototype.tag = \"hmtx\";\n HmtxTable.prototype.parse = function(data) {\n var i, last, lsbCount, m, _j, _ref, _results;\n data.pos = this.offset;\n this.metrics = [];\n for (\n i = 0, _ref = this.file.hhea.numberOfMetrics;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n this.metrics.push({\n advance: data.readUInt16(),\n lsb: data.readInt16()\n });\n }\n lsbCount = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics;\n this.leftSideBearings = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(data.readInt16());\n }\n return _results;\n })();\n this.widths = function() {\n var _j, _len, _ref1, _results;\n _ref1 = this.metrics;\n _results = [];\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n m = _ref1[_j];\n _results.push(m.advance);\n }\n return _results;\n }.call(this);\n last = this.widths[this.widths.length - 1];\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(this.widths.push(last));\n }\n return _results;\n };\n /***************************************************************/\n /* function : forGlyph */\n /* comment : Returns the advance width and lsb for this glyph. */\n /***************************************************************/\n HmtxTable.prototype.forGlyph = function(id) {\n if (id in this.metrics) {\n return this.metrics[id];\n }\n return {\n advance: this.metrics[this.metrics.length - 1].advance,\n lsb: this.leftSideBearings[id - this.metrics.length]\n };\n };\n /*HmtxTable.prototype.encode = function (mapping) {\n var id, metric, table, _i, _len;\n table = new Data;\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n metric = this.forGlyph(id);\n table.writeUInt16(metric.advance);\n table.writeUInt16(metric.lsb);\n }\n return table.data;\n };*/\n return HmtxTable;\n})(Table);\n\nvar __slice = [].slice;\n\nvar GlyfTable = (function(_super) {\n __extends(GlyfTable, _super);\n\n function GlyfTable() {\n return GlyfTable.__super__.constructor.apply(this, arguments);\n }\n GlyfTable.prototype.tag = \"glyf\";\n GlyfTable.prototype.parse = function() {\n return (this.cache = {});\n };\n GlyfTable.prototype.glyphFor = function(id) {\n var data,\n index,\n length,\n loca,\n numberOfContours,\n raw,\n xMax,\n xMin,\n yMax,\n yMin;\n if (id in this.cache) {\n return this.cache[id];\n }\n loca = this.file.loca;\n data = this.file.contents;\n index = loca.indexOf(id);\n length = loca.lengthOf(id);\n if (length === 0) {\n return (this.cache[id] = null);\n }\n data.pos = this.offset + index;\n raw = new Data(data.read(length));\n numberOfContours = raw.readShort();\n xMin = raw.readShort();\n yMin = raw.readShort();\n xMax = raw.readShort();\n yMax = raw.readShort();\n if (numberOfContours === -1) {\n this.cache[id] = new CompoundGlyph(raw, xMin, yMin, xMax, yMax);\n } else {\n this.cache[id] = new SimpleGlyph(\n raw,\n numberOfContours,\n xMin,\n yMin,\n xMax,\n yMax\n );\n }\n return this.cache[id];\n };\n GlyfTable.prototype.encode = function(glyphs, mapping, old2new) {\n var glyph, id, offsets, table, _i, _len;\n table = [];\n offsets = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n glyph = glyphs[id];\n offsets.push(table.length);\n if (glyph) {\n table = table.concat(glyph.encode(old2new));\n }\n }\n offsets.push(table.length);\n return {\n table: table,\n offsets: offsets\n };\n };\n return GlyfTable;\n})(Table);\n\nvar SimpleGlyph = (function() {\n /**************************************************************************/\n /* function : SimpleGlyph */\n /* comment : Stores raw, xMin, yMin, xMax, and yMax values for this glyph.*/\n /**************************************************************************/\n function SimpleGlyph(raw, numberOfContours, xMin, yMin, xMax, yMax) {\n this.raw = raw;\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = false;\n }\n SimpleGlyph.prototype.encode = function() {\n return this.raw.data;\n };\n return SimpleGlyph;\n})();\n\nvar CompoundGlyph = (function() {\n var ARG_1_AND_2_ARE_WORDS,\n MORE_COMPONENTS,\n WE_HAVE_AN_X_AND_Y_SCALE,\n WE_HAVE_A_SCALE,\n WE_HAVE_A_TWO_BY_TWO,\n WE_HAVE_INSTRUCTIONS;\n ARG_1_AND_2_ARE_WORDS = 0x0001;\n WE_HAVE_A_SCALE = 0x0008;\n MORE_COMPONENTS = 0x0020;\n WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n WE_HAVE_A_TWO_BY_TWO = 0x0080;\n WE_HAVE_INSTRUCTIONS = 0x0100;\n\n /********************************************************************************************************************/\n /* function : CompoundGlypg generator */\n /* comment : It stores raw, xMin, yMin, xMax, yMax, glyph id, and glyph offset for the corresponding compound glyph.*/\n /********************************************************************************************************************/\n function CompoundGlyph(raw, xMin, yMin, xMax, yMax) {\n var data, flags;\n this.raw = raw;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = true;\n this.glyphIDs = [];\n this.glyphOffsets = [];\n data = this.raw;\n while (true) {\n flags = data.readShort();\n this.glyphOffsets.push(data.pos);\n this.glyphIDs.push(data.readUInt16());\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n data.pos += 4;\n } else {\n data.pos += 2;\n }\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.pos += 8;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.pos += 4;\n } else if (flags & WE_HAVE_A_SCALE) {\n data.pos += 2;\n }\n }\n }\n /****************************************************************************************************************/\n /* function : CompoundGlypg encode */\n /* comment : After creating a table for the characters you typed, you call directory.encode to encode the table.*/\n /****************************************************************************************************************/\n CompoundGlyph.prototype.encode = function() {\n var i, result, _len, _ref;\n result = new Data(__slice.call(this.raw.data));\n _ref = this.glyphIDs;\n for (i = 0, _len = _ref.length; i < _len; ++i) {\n result.pos = this.glyphOffsets[i];\n }\n return result.data;\n };\n return CompoundGlyph;\n})();\n\nvar LocaTable = (function(_super) {\n __extends(LocaTable, _super);\n\n function LocaTable() {\n return LocaTable.__super__.constructor.apply(this, arguments);\n }\n LocaTable.prototype.tag = \"loca\";\n LocaTable.prototype.parse = function(data) {\n var format, i;\n data.pos = this.offset;\n format = this.file.head.indexToLocFormat;\n if (format === 0) {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 2) {\n _results.push(data.readUInt16() * 2);\n }\n return _results;\n }.call(this));\n } else {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 4) {\n _results.push(data.readUInt32());\n }\n return _results;\n }.call(this));\n }\n };\n LocaTable.prototype.indexOf = function(id) {\n return this.offsets[id];\n };\n LocaTable.prototype.lengthOf = function(id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n LocaTable.prototype.encode = function(offsets, activeGlyphs) {\n var LocaTable = new Uint32Array(this.offsets.length);\n var glyfPtr = 0;\n var listGlyf = 0;\n for (var k = 0; k < LocaTable.length; ++k) {\n LocaTable[k] = glyfPtr;\n if (listGlyf < activeGlyphs.length && activeGlyphs[listGlyf] == k) {\n ++listGlyf;\n LocaTable[k] = glyfPtr;\n var start = this.offsets[k];\n var len = this.offsets[k + 1] - start;\n if (len > 0) {\n glyfPtr += len;\n }\n }\n }\n var newLocaTable = new Array(LocaTable.length * 4);\n for (var j = 0; j < LocaTable.length; ++j) {\n newLocaTable[4 * j + 3] = LocaTable[j] & 0x000000ff;\n newLocaTable[4 * j + 2] = (LocaTable[j] & 0x0000ff00) >> 8;\n newLocaTable[4 * j + 1] = (LocaTable[j] & 0x00ff0000) >> 16;\n newLocaTable[4 * j] = (LocaTable[j] & 0xff000000) >> 24;\n }\n return newLocaTable;\n };\n return LocaTable;\n})(Table);\n\n/************************************************************************************/\n/* function : invert */\n/* comment : Change the object's (key: value) to create an object with (value: key).*/\n/************************************************************************************/\nvar invert = function(object) {\n var key, ret, val;\n ret = {};\n for (key in object) {\n val = object[key];\n ret[val] = key;\n }\n return ret;\n};\n\n/*var successorOf = function (input) {\n var added, alphabet, carry, i, index, isUpperCase, last, length, next, result;\n alphabet = 'abcdefghijklmnopqrstuvwxyz';\n length = alphabet.length;\n result = input;\n i = input.length;\n while (i >= 0) {\n last = input.charAt(--i);\n if (isNaN(last)) {\n index = alphabet.indexOf(last.toLowerCase());\n if (index === -1) {\n next = last;\n carry = true;\n }\n else {\n next = alphabet.charAt((index + 1) % length);\n isUpperCase = last === last.toUpperCase();\n if (isUpperCase) {\n next = next.toUpperCase();\n }\n carry = index + 1 >= length;\n if (carry && i === 0) {\n added = isUpperCase ? 'A' : 'a';\n result = added + next + result.slice(1);\n break;\n }\n }\n }\n else {\n next = +last + 1;\n carry = next > 9;\n if (carry) {\n next = 0;\n }\n if (carry && i === 0) {\n result = '1' + next + result.slice(1);\n break;\n }\n }\n result = result.slice(0, i) + next + result.slice(i + 1);\n if (!carry) {\n break;\n }\n }\n return result;\n };*/\n\nvar Subset = (function() {\n function Subset(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.next = 33;\n }\n /*Subset.prototype.use = function (character) {\n var i, _i, _ref;\n if (typeof character === 'string') {\n for (i = _i = 0, _ref = character.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n this.use(character.charCodeAt(i));\n }\n return;\n }\n if (!this.unicodes[character]) {\n this.subset[this.next] = character;\n return this.unicodes[character] = this.next++;\n }\n };*/\n /*Subset.prototype.encodeText = function (text) {\n var char, i, string, _i, _ref;\n string = '';\n for (i = _i = 0, _ref = text.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n char = this.unicodes[text.charCodeAt(i)];\n string += String.fromCharCode(char);\n }\n return string;\n };*/\n /***************************************************************/\n /* function : generateCmap */\n /* comment : Returns the unicode cmap for this font. */\n /***************************************************************/\n Subset.prototype.generateCmap = function() {\n var mapping, roman, unicode, unicodeCmap, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n mapping = {};\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n mapping[roman] = unicodeCmap[unicode];\n }\n return mapping;\n };\n /*Subset.prototype.glyphIDs = function () {\n var ret, roman, unicode, unicodeCmap, val, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n ret = [0];\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n val = unicodeCmap[unicode];\n if ((val != null) && __indexOf.call(ret, val) < 0) {\n ret.push(val);\n }\n }\n return ret.sort();\n };*/\n /******************************************************************/\n /* function : glyphsFor */\n /* comment : Returns simple glyph objects for the input character.*/\n /******************************************************************/\n Subset.prototype.glyphsFor = function(glyphIDs) {\n var additionalIDs, glyph, glyphs, id, _i, _len, _ref;\n glyphs = {};\n for (_i = 0, _len = glyphIDs.length; _i < _len; _i++) {\n id = glyphIDs[_i];\n glyphs[id] = this.font.glyf.glyphFor(id);\n }\n additionalIDs = [];\n for (id in glyphs) {\n glyph = glyphs[id];\n if (glyph != null ? glyph.compound : void 0) {\n additionalIDs.push.apply(additionalIDs, glyph.glyphIDs);\n }\n }\n if (additionalIDs.length > 0) {\n _ref = this.glyphsFor(additionalIDs);\n for (id in _ref) {\n glyph = _ref[id];\n glyphs[id] = glyph;\n }\n }\n return glyphs;\n };\n /***************************************************************/\n /* function : encode */\n /* comment : Encode various tables for the characters you use. */\n /***************************************************************/\n Subset.prototype.encode = function(glyID, indexToLocFormat) {\n var cmap,\n code,\n glyf,\n glyphs,\n id,\n ids,\n loca,\n new2old,\n newIDs,\n nextGlyphID,\n old2new,\n oldID,\n oldIDs,\n tables,\n _ref;\n cmap = CmapTable.encode(this.generateCmap(), \"unicode\");\n glyphs = this.glyphsFor(glyID);\n old2new = {\n 0: 0\n };\n _ref = cmap.charMap;\n for (code in _ref) {\n ids = _ref[code];\n old2new[ids.old] = ids[\"new\"];\n }\n nextGlyphID = cmap.maxGlyphID;\n for (oldID in glyphs) {\n if (!(oldID in old2new)) {\n old2new[oldID] = nextGlyphID++;\n }\n }\n new2old = invert(old2new);\n newIDs = Object.keys(new2old).sort(function(a, b) {\n return a - b;\n });\n oldIDs = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = newIDs.length; _i < _len; _i++) {\n id = newIDs[_i];\n _results.push(new2old[id]);\n }\n return _results;\n })();\n glyf = this.font.glyf.encode(glyphs, oldIDs, old2new);\n loca = this.font.loca.encode(glyf.offsets, oldIDs);\n tables = {\n cmap: this.font.cmap.raw(),\n glyf: glyf.table,\n loca: loca,\n hmtx: this.font.hmtx.raw(),\n hhea: this.font.hhea.raw(),\n maxp: this.font.maxp.raw(),\n post: this.font.post.raw(),\n name: this.font.name.raw(),\n head: this.font.head.encode(indexToLocFormat)\n };\n if (this.font.os2.exists) {\n tables[\"OS/2\"] = this.font.os2.raw();\n }\n return this.font.directory.encode(tables);\n };\n return Subset;\n})();\n\njsPDF.API.PDFObject = (function() {\n var pad;\n\n function PDFObject() {}\n pad = function(str, length) {\n return (Array(length + 1).join(\"0\") + str).slice(-length);\n };\n /*****************************************************************************/\n /* function : convert */\n /* comment :Converts pdf tag's / FontBBox and array values in / W to strings */\n /*****************************************************************************/\n PDFObject.convert = function(object) {\n var e, items, key, out, val;\n if (Array.isArray(object)) {\n items = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = object.length; _i < _len; _i++) {\n e = object[_i];\n _results.push(PDFObject.convert(e));\n }\n return _results;\n })().join(\" \");\n return \"[\" + items + \"]\";\n } else if (typeof object === \"string\") {\n return \"/\" + object;\n } else if (object != null ? object.isString : void 0) {\n return \"(\" + object + \")\";\n } else if (object instanceof Date) {\n return (\n \"(D:\" +\n pad(object.getUTCFullYear(), 4) +\n pad(object.getUTCMonth(), 2) +\n pad(object.getUTCDate(), 2) +\n pad(object.getUTCHours(), 2) +\n pad(object.getUTCMinutes(), 2) +\n pad(object.getUTCSeconds(), 2) +\n \"Z)\"\n );\n } else if ({}.toString.call(object) === \"[object Object]\") {\n out = [\"<<\"];\n for (key in object) {\n val = object[key];\n out.push(\"/\" + key + \" \" + PDFObject.convert(val));\n }\n out.push(\">>\");\n return out.join(\"\\n\");\n } else {\n return \"\" + object;\n }\n };\n return PDFObject;\n})();\n","import { useContext, useState, useEffect } from 'react';\nimport ResultsContext from '../../../context/ResultsContext';\nimport SubmissionFormContext from '../../../context/SubmissionFormContext';\nimport OverlayContext from '../../../context/OverlayContext';\nimport { useNavigate } from \"react-router-dom\";\nimport logo from '../../../images/logo.jpg';\nimport html2canvas from 'html2canvas';\nimport jsPDF from 'jspdf';\nimport './NavBar.scss'\n\nexport default function NavBar({ setShowContactForm }) {\n const { formContent } = useContext(SubmissionFormContext);\n const { resultsContent, updateResultsContent } = useContext(ResultsContext);\n const { showOverlay } = useContext(OverlayContext);\n\n const REACT_APP_PROD_URL = process.env.REACT_APP_PROD_URL;\n const DEVELOPMENT_API = process.env.REACT_APP_DEVELOPMENT_API;\n const REACT_APP_PROD_API = process.env.REACT_APP_PROD_API;\n const REACT_APP_UAT_API = process.env.REACT_APP_UAT_API;\n const REACT_APP_UAT_URL = process.env.REACT_APP_UAT_URL;\n const [API, setAPI] = useState(DEVELOPMENT_API);\n\n const navigate = useNavigate();\n let screenShotMessageSent = false;\n let isDownload = true;\n\n useEffect(() => {\n if (window.location.host === REACT_APP_PROD_URL) {\n setAPI(REACT_APP_PROD_API)\n } else if (window.location.host === REACT_APP_UAT_URL) {\n setAPI(REACT_APP_UAT_API)\n }\n }, [REACT_APP_PROD_URL, REACT_APP_PROD_API]);\n\n const vizFrame = document.getElementById(\"visualizationIFrame\");\n const vizImage = document.getElementById(\"vizImage\");\n window.addEventListener('message', message => {\n if (screenShotMessageSent && message.data.action === \"__TAKE_SCREENSHOT__\") {\n screenShotMessageSent = false;\n\n vizFrame.style.setProperty(\"display\", \"none\");\n vizImage.style.setProperty(\"display\", \"block\");\n vizImage.src = message.data.data;\n\n capturePDF();\n }\n\n if (message.data.action === \"__LOGS_UPDATED__\") {\n const data = message.data.data;\n window.kmlFileUploaded = data[\"kml-file-uploaded\"];\n window.kmlFile = data[\"kml-file\"];\n window.coordinates = data?.location?.coordinates;\n window.centerCoordinates = data[\"site-final-location\"][\"center-coordinates\"];\n window.northEastCoordinates = data[\"site-final-location\"][\"north-east-coordinates\"];\n window.southWestCoordinates = data[\"site-final-location\"][\"south-west-coordinates\"];\n window.width = data[\"site-info\"][\"required-area\"][\"width\"];\n window.height = data[\"site-info\"][\"required-area\"][\"height\"]\n window.rotation = data[\"site-info\"][\"rotation\"];\n window.kmlFile = data[\"kml-file\"];\n }\n });\n\n const sendVisualisationScreenShotMessage = () => {\n vizFrame.contentWindow.postMessage({ \"action\": \"__TAKE_SCREENSHOT__\", \"data\": \"\" }, \"*\");\n screenShotMessageSent = true;\n };\n\n const downloadPdf = () => {\n isDownload = true;\n sendVisualisationScreenShotMessage();\n }\n\n const getQuote = () => {\n isDownload = false;\n sendVisualisationScreenShotMessage();\n }\n\n const capturePDF = () => {\n let resultsWrapper = document.querySelector(\".results-wrapper\");\n let resultsWrapperMaxW = document.querySelector(\".results-max-w\");\n let submissionForm = document.querySelector(\".SubmissionForm\");\n let navBar = document.querySelector(\".NavBar\");\n let openConfig = document.querySelector(\".show-config\");\n let bolEolOffset = window.getComputedStyle(document.querySelector('.toggle_bol_eol_flag'), ':before').getPropertyValue(\"--highlight-x-pos\")\n let augmentationOffset = window.getComputedStyle(document.querySelector('.toggle_augmentation'), ':before').getPropertyValue(\"--highlight-x-pos\")\n\n let stickySubmit = document.querySelector(\".sticky-submit\");\n let pdfLogo = document.querySelector(\".pdfLogo\");\n let changeOverlay = document.querySelector(\".changeOverlay\");\n let submitSection = document.querySelector(\".submit-section\");\n\n if (bolEolOffset === \"58px\") {\n document.querySelector('.toggle_bol_eol_flag').style.setProperty(\"--highlight-x-pos\", \"25.5px\");\n } else {\n document.querySelector('.toggle_bol_eol_flag').style.setProperty(\"--highlight-x-pos\", \"3px\");\n }\n if (augmentationOffset === \"58px\") {\n document.querySelector('.toggle_augmentation').style.setProperty(\"--highlight-x-pos\", \"25.5px\");\n } else {\n document.querySelector('.toggle_augmentation').style.setProperty(\"--highlight-x-pos\", \"3px\");\n }\n\n if (!document.querySelector(\".show-config\").classList.contains(\"open\")) {\n document.querySelector(\".show-config\").click();\n }\n\n resultsWrapper.style.overflow = \"visible\";\n resultsWrapper.style.height = \"2070px\";\n resultsWrapper.style.backgroundColor = \"rgba(0,56,117,.1)\";\n resultsWrapper.style.width = \"fit-content\";\n resultsWrapper.style.marginLeft = \"0\";\n resultsWrapper.style.paddingRight = \"20px\";\n resultsWrapper.style.paddingTop = \"10px\";\n\n resultsWrapperMaxW.style.paddingBottom = \"80px\";\n\n submissionForm.style.paddingLeft = \"20px\";\n submissionForm.style.paddingTop = \"20px\";\n submissionForm.style.height = \"fit-content\";\n submissionForm.style.overflow = \"visible\";\n submissionForm.style.top = \"0\";\n\n if (changeOverlay) {\n changeOverlay.style.width = \"1000px\";\n changeOverlay.style.right = \"0px\";\n changeOverlay.style.position = \"absolute\";\n }\n\n submitSection.style.display = \"none\";\n\n stickySubmit.style.position = \"\";\n\n pdfLogo.style.display = \"block\";\n\n navBar.style.display = \"none\";\n\n openConfig.style.display = \"none\";\n\n document.body.style.backgroundColor = \"white\";\n\n setTimeout(async () => {\n const canvas = await html2canvas(document.body, { windowWidth: 1600, windowHeight: 2070 });\n const imgData = canvas.toDataURL('image/png');\n\n if (isDownload) {\n const pdf = new jsPDF('portrait');\n const pdfHeight = pdf.internal.pageSize.getHeight();\n const imgWidth = pdf.internal.pageSize.getWidth();\n const xPos = 0;\n const yPos = 0;\n pdf.addImage(imgData, 'PNG', xPos, yPos, imgWidth, pdfHeight);\n pdf.save(`AESI_TeraStor_sizing_estimate_${formContent.rated_system_power_mw}MW_${formContent.discharge_duration}MWh.pdf`);\n } else {\n const requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': 'gC0WrwRfg57dGcjlHIFEIaIfO0z4AsHe7KqVWacV'\n },\n body: JSON.stringify({ file: imgData })\n };\n\n try {\n setShowContactForm(true);\n const response = await fetch(`${API}/fkrwhtv`, requestOptions);\n const imageURL = await response.json();\n\n document.querySelector(\"input[name='aesi_terastor_sizing__estimate']\").value = imageURL.url\n } catch (e) {\n console.error(e);\n }\n }\n\n resultsWrapper.style.removeProperty(\"overflow\");\n resultsWrapper.style.removeProperty(\"left\");\n resultsWrapper.style.removeProperty(\"height\");\n resultsWrapper.style.removeProperty(\"background-color\");\n resultsWrapper.style.removeProperty(\"width\");\n resultsWrapper.style.removeProperty(\"margin-left\");\n resultsWrapper.style.removeProperty(\"padding-right\");\n resultsWrapper.style.removeProperty(\"padding-top\");\n\n resultsWrapperMaxW.style.removeProperty(\"width\");\n resultsWrapperMaxW.style.removeProperty(\"padding-bottom\");\n\n submissionForm.style.removeProperty(\"width\");\n submissionForm.style.removeProperty(\"height\");\n submissionForm.style.removeProperty(\"max-width\");\n submissionForm.style.removeProperty(\"overflow\");\n submissionForm.style.removeProperty(\"top\");\n submissionForm.style.removeProperty(\"padding-left\");\n submissionForm.style.removeProperty(\"padding-top\");\n submissionForm.style.removeProperty(\"padding-bottom\");\n\n if (changeOverlay) {\n changeOverlay.style.removeProperty(\"width\");\n changeOverlay.style.removeProperty(\"right\");\n changeOverlay.style.removeProperty(\"position\");\n }\n\n submitSection.style.removeProperty(\"display\");\n\n stickySubmit.style.position = \"sticky\";\n\n pdfLogo.style.setProperty(\"display\", \"none\");\n\n navBar.style.removeProperty(\"display\");\n\n openConfig.style.removeProperty(\"display\");\n\n vizFrame.style.setProperty(\"display\", \"block\")\n vizImage.style.setProperty(\"display\", \"none\");\n\n document.body.style.removeProperty(\"background-color\");\n document.body.style.removeProperty(\"width\");\n document.body.style.removeProperty(\"max-width\");\n document.querySelector('.toggle_bol_eol_flag').style.removeProperty(\"--highlight-x-pos\");\n document.querySelector('.toggle_augmentation').style.removeProperty(\"--highlight-x-pos\");\n }, 200)\n };\n\n return (\n
    \n navigate(\"/\")} src={logo} alt=\"logo\" />\n {resultsContent.service_life ?\n
    \n {showOverlay ?\n <>\n \n \n \n :\n <>\n \n \n \n }\n
    \n : null\n }\n
    \n )\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","import React from 'react';\n\nconst ToastContext = React.createContext()\n\nexport default ToastContext;","import { useContext, useEffect } from 'react';\nimport ToastContext from '../../context/ToastContext';\nimport './Toast.scss'\n\nexport default function Toast({ toastMessage = \"Generic Error\", showToast = false, toastStyles = { backgroundColor: \"#ac141a\" } }) {\n const { toastContent, updateToastContent } = useContext(ToastContext);\n function hideToast() {\n updateToastContent({\n ...toastContent,\n showToast: false\n })\n }\n\n useEffect(() => {\n if (showToast) {\n setTimeout(() => {\n hideToast()\n }, 5000);\n }\n }, [showToast]);\n\n return (\n
    \n
    \n {toastMessage}\n
    \n )\n}","let default_date = new Date();\ndefault_date.setDate(new Date().getDate() + 28 * 7)\n\nconst FormContentBasic = {\n rated_system_power_mw: 100,\n power_factor_support_at_poi: 0.95,\n bol_eol_flag: \"EOL\",\n desired_discharge_energy_mwh: 400,\n cycles_per_year: 365,\n service_life: 20,\n inverter: \"AESI\",\n discharge_duration: 4,\n augmentation: true,\n initial_augmentation_period: 1,\n augmentation_period: 3,\n delivery_date: default_date.toISOString().slice(0, 10),\n poi_voltage: 34.5,\n}\n\nexport default FormContentBasic;","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid',\n 'fasr': 'regular',\n 'fa-regular': 'regular',\n 'fasl': 'light',\n 'fa-light': 'light'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass',\n 'regular': 'fasr',\n 'light': 'fasl'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid',\n 'fasr': 'fa-regular',\n 'fasl': 'fa-light'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass',\n 'fa-regular': 'fasr',\n 'fa-light': 'fasl'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss|sr|sl)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i;\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass',\n '400': 'fasr',\n '300': 'fasl'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n -webkit-transition-delay: 0s;\\n transition-delay: 0s;\\n -webkit-transition-duration: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.4.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (_abstract) {\n node.parentNode.insertBefore(convertSVG(_abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var _abstract2 = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete _abstract2[0].attributes.id;\n\n if (_abstract2[0].attributes.class) {\n var splitClasses = _abstract2[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n\n _abstract2[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = _abstract2.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var _abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = _abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(_abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (_abstract.attributes && (_abstract.attributes.fill || force)) {\n _abstract.attributes.fill = 'black';\n }\n\n return _abstract;\n}\n\nfunction deGroup(_abstract2) {\n if (_abstract2.tag === 'g') {\n return _abstract2.children;\n } else {\n return [_abstract2];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","var prefix = \"fas\";\nvar fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"]\n};\nvar fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nvar fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32H272c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H105.4C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H80c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"]\n};\nvar fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nvar fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nvar fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nvar faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"]\n};\nvar faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M64 128V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H160 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faCommentAlt = faMessage;\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H296c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272H216c13.3 0 24 10.7 24 24V440c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"]\n};\nvar faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nvar faSortDesc = faSortDown;\nvar faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"]\n};\nvar faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L352 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L213.3 304H240c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48H74.7zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368H496c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400H336c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128v24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7V256c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256v24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8V256c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96v24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7V256c0-28.7 23.3-52 52-52s52 23.3 52 52v24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1V256c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24v24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9V256z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm64-64c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h48c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32H160C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64v88c0 22.1-17.9 40-40 40s-40-17.9-40-40V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v56c0 39.8 32.2 72 72 72z\"]\n};\nvar faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"]\n};\nvar faStepForward = faForwardStep;\nvar faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1V345.8c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V400 334 64 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9v65.5L64 252.6V318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3V238.7l38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9v66.7l-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8v71.4c21.8 1.9 43.3 6.7 64 14.4V244.2l22.7 6.7c13.5 4 27.3 6.4 41.3 7.4V194c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12v-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8v72.4c-13-.4-26 .8-38.7 3.6L128 173.2V98L64 114v73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2V251.9l-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5v77.4zm64-149.4V115.4c-20.9 6.1-42.4 9.1-64 9.1V194c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nvar faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faFootballBall = faFootball;\nvar faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"]\n};\nvar faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nvar faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"]\n};\nvar faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nvar faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"]\n};\nvar faMale = faPerson;\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"]\n};\nvar faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H302.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H160V208.5zM288 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H76.1c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64C78.3 64 64 49.7 64 32S78.3 0 96 0h16H272h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"]\n};\nvar faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32V224h96V192c0-35.3 28.7-64 64-64H480V32c0-17.7-14.3-32-32-32H128zM256 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H576c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H256zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32v13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301V288c0-17.7-14.3-32-32-32H64zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8V480c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V340.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nvar faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPencilAlt = faPencil;\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFileClipboard = faPaste;\nvar faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16z\"]\n};\nvar faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"]\n};\nvar faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"]\n};\nvar faTorah = faScrollTorah;\nvar faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H364.3L256 211.7V182.6c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArchive = faBoxArchive;\nvar faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V416H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nvar faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nvar faLegal = faGavel;\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l24 0H376c0 13.3 10.7 24 24 24s24-10.7 24-24H400l24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nvar faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCut = faScissors;\nvar faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"]\n};\nvar faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nvar faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2C205.1 38.5 189.5 32 173.3 32z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nvar faMailReply = faReply;\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM453.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C640 440 568.7 512 480 512c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM530 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 320c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM320 313.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6c0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nvar faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nvar faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nvar faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faHeadphonesAlt = faHeadphonesSimple;\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V304c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V112c0-11.1-9-20.1-20.1-20.1zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M293.5 3.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C480 280 408.7 352 320 352c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM370 273c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15zM32 288c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32s-14.3 32-32 32v64H544V320c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32V288zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nvar faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2V192C0 86 86 0 192 0S384 86 384 192V462.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"]\n};\nvar faListSquares = faList;\nvar faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"]\n};\nvar faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nvar faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nvar faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V424c0 11 9 20 20 20s20-9 20-20V410.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l0 0-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V216z\"]\n};\nvar faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"]\n};\nvar faEdit = faPenToSquare;\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9H112z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"]\n};\nvar faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"]\n};\nvar faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nvar faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"]\n};\nvar faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"]\n};\nvar faHandPaper = faHand;\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5 0-.1c-2.6-7.8-10.7-12.3-18.7-10.5C4.4 354.2-.9 361.8 .1 370L16 368C.1 370 .1 370 .1 370l0 0 0 0 0 .1 .1 .4c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.3 0 0c0 0 0 0 0 0c-1.9-7.3-8.6-12.4-16.2-12.1c-7.6 .3-13.9 5.9-15.1 13.4L336 368c-15.8-2.6-15.8-2.6-15.8-2.6l0 0 0 0 0 .1-.1 .3c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4zM280.9 66.7c-6-4-14-3.5-19.5 1.3s-7 12.7-3.7 19.2L272 80c-14.3 7.2-14.3 7.2-14.3 7.2l0 0 0 0 0 .1 .1 .2 .4 .7c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.4-12.4-32.6-12.5-45.1-.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2 0 0 0 0 0 0z\"]\n};\nvar faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96h38.4C439.9 0 480 40.1 480 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H352c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V400H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512H297.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432H48z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"]\n};\nvar faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"]\n};\nvar faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"]\n};\nvar faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nvar faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nvar faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.2C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8V160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V384c0 53 43 96 96 96h32c106 0 192-86 192-192V256c0-53-43-96-96-96H272c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c17.7 0 32 14.3 32 32v32c0 70.7-57.3 128-128 128H160c-17.7 0-32-14.3-32-32V224h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V128.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"]\n};\nvar faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8h-3.9c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80v48l-48 0c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h48c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16H240V80c0-8.8-7.2-16-16-16H192c-8.8 0-16 7.2-16 16z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H181.3c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM256 416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H256V416zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H400c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"]\n};\nvar faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V208c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17H128c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 41 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320H304c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9H360c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64h-1.4c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H233.9l52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nvar faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"]\n};\nvar faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 53 43 96 96 96H352c53 0 96-43 96-96V352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64V288H144c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320H32V448c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V160H288c-17.7 0-32-14.3-32-32V0H96zM288 0V128H416L288 0z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"]\n};\nvar faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nvar faPenAlt = faPenClip;\nvar faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"]\n};\nvar faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"]\n};\nvar faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H224l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H24c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nvar faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nvar faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nvar faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"]\n};\nvar faAreaChart = faChartArea;\nvar faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"]\n};\nvar faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faCancel = faBan;\nvar faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96H128c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H437.3L426.9 64.8C420.4 45.2 402.1 32 381.4 32H258.6c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16H355.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM192 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"]\n};\nvar faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nvar faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32H56C42.7 32 32 42.7 32 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312V456c0 13.3 10.7 24 24 24H200c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H456c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H362.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nvar faRunning = faPersonRunning;\nvar faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nvar faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352H128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H288h64H480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1V320v32H288V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8V96 32zm64 448v32H288V480h64v32H480V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H480 352 288 160 128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v32H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48H128c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v70.6L189.1 307c-5.2-2-10.6-3-16.2-3h-2.1c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6H316.4c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8H339c-5.5 0-11 1-16.2 3L272 326.6V256H384c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V176h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160H93.3L112 115.2 130.7 160zM256 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H288c-17.7 0-32 14.3-32 32zm96 64H320V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320V160zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nvar faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"]\n};\nvar faMouse = faComputerMouse;\nvar faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nvar faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H224zm-16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nvar faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nvar faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"]\n};\nvar faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nvar faWeight = faWeightScale;\nvar faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5V238.9c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400H384l28.9-159c2.1-11.3 3.1-22.8 3.1-34.3V192C416 86 330 0 224 0H83.8C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H409.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432H64L22.6 473.4z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H282.2l-9.6-48H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H259.8z\"]\n};\nvar faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 231c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V193.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 119c9.4-9.4 24.6-9.4 33.9 0L385 231z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nvar faWalking = faPersonWalking;\nvar faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nvar faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faProcedures = faBedPulse;\nvar faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nvar faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"]\n};\nvar faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3L365.5 384H160z\"]\n};\nvar faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"]\n};\nvar faBathtub = faBath;\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faUserEdit = faUserPen;\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"]\n};\nvar faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nvar faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nvar faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400H384 343.6 168.4 128 112.3L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224l0 0 0 0h0zM112 432H400l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H86.6C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"]\n};\nvar faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7v-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8 0 0 0 0-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.7 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4H352h13.3l0 0H397l23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352v8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H352l0 0 0 0H258.8L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V13.4C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32H126.8c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nvar faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64z\"]\n};\nvar faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"]\n};\nvar faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"]\n};\nvar faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"]\n};\nvar faColumns = faTableColumns;\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31V512H128c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2H336c-21.7 0-41.3 8.6-55.7 22.6zM336 304H534l0 0h10l-19.7 64H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H514.5l-9.8 32H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H494.8l-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2H288V352c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128H16zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0h72.9c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64H32C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nvar faDollyBox = faDolly;\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"]\n};\nvar faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nvar faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"]\n};\nvar faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"]\n};\nvar faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1C104.1 390 112 361.5 112 332.5V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256A128 128 0 1 1 224 0a128 128 0 1 1 0 256zM209.1 359.2l-18.6-31c-6.4-10.7 1.3-24.2 13.7-24.2H224h19.7c12.4 0 20.1 13.6 13.7 24.2l-18.6 31 33.4 123.9 36-146.9c2-8.1 9.8-13.4 17.9-11.3c70.1 17.6 121.9 81 121.9 156.4c0 17-13.8 30.7-30.7 30.7H285.5c-2.1 0-4-.4-5.8-1.1l.3 1.1H168l.3-1.1c-1.8 .7-3.8 1.1-5.8 1.1H30.7C13.8 512 0 498.2 0 481.3c0-75.5 51.9-138.9 121.9-156.4c8.1-2 15.9 3.3 17.9 11.3l36 146.9 33.4-123.9z\"]\n};\nvar faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h76.8L384 320V448z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.3-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"]\n};\nvar faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nvar faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 281c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 136c0-13.3 10.7-24 24-24s24 10.7 24 24l0 182.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 393c-9.4 9.4-24.6 9.4-33.9 0L127 281z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nvar faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"]\n};\nvar faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nvar faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288H200.4zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416H583.3L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"]\n};\nvar faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nvar faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nvar faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160H128c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C0 153.3 57.3 96 128 96H338.7L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416H96c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H242.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0h32c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64H64c123.7 0 224 100.3 224 224v32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320C100.3 320 0 219.7 0 96z\"]\n};\nvar faSprout = faSeedling;\nvar faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM231 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L376 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-182.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L119 273c-9.4-9.4-9.4-24.6 0-33.9L231 127z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nvar faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nvar faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"]\n};\nvar faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32H392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512H528L284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H545.3l.3 0z\"]\n};\nvar faUserAltSlash = faUserLargeSlash;\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nvar faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSimpleSlash;\nvar faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"]\n};\nvar faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"]\n};\nvar faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nvar faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"]\n};\nvar faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"]\n};\nvar faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nvar faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z\"]\n};\nvar faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H480V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H384c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V320 96zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nvar faAd = faRectangleAd;\nvar faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM281 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L136 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l182.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L393 239c9.4 9.4 9.4 24.6 0 33.9L281 385z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H431.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400H496c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C576 143 465 32 328 32H312zm50.5 168l17.1 40H333l29.5-40zm-87.7 38.1l-1.4 1.9H225.1l32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240H88.8zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nvar faUnsorted = faSort;\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164 152v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V360c0 11-9 20-20 20s-20-9-20-20V345.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V152c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nvar faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M148 76.6C148 34.3 182.3 0 224.6 0c20.3 0 39.8 8.1 54.1 22.4l9.3 9.3 9.3-9.3C311.6 8.1 331.1 0 351.4 0C393.7 0 428 34.3 428 76.6c0 20.3-8.1 39.8-22.4 54.1L302.1 234.1c-7.8 7.8-20.5 7.8-28.3 0L170.4 130.7C156.1 116.4 148 96.9 148 76.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8v0c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2v0c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2v0c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2v0c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8v0c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320v0c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256v0C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2v0z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [640, 512, [\"star-half-alt\"], \"f5c0\", \"M320 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L320.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L320.1 439.8 191.8 508.3C181 514 167.9 513.1 158 506s-14.9-19.3-12.9-31.3L169.8 329 65.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L227 150.3 291.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L470.5 329l24.6 145.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"]\n};\nvar faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.2 5.4c-25.9 5.9-50 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCab = faTaxi;\nvar faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"]\n};\nvar faPieChart = faChartPie;\nvar faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nvar faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1l99.9 107.1c3.5 3.8 5.5 8.7 5.5 13.8s-2 10.1-5.5 13.8L294.6 376.9c-4.2 4.5-10.1 7.1-16.3 7.1C266 384 256 374 256 361.7l0-57.7-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-57.7c0-12.3 10-22.3 22.3-22.3c6.2 0 12.1 2.6 16.3 7.1z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nvar faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nvar faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nvar faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59.1 146.7-136.1 158.2c0 .6 .1 1.2 .1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l-24 0-24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2 .1-1.8C155.1 370.7 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM256 488h24c0 13.3-10.7 24-24 24s-24-10.7-24-24h24zm96-264a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0h58c15.1-18.1 32.1-35.7 50.5-52.1c1.5-1.4 3.2-2.6 4.8-3.8L402.9 32H304V160zm209.9-23.7c17.4-15.8 43.9-16.2 61.7-1.2c-.1-.7-.3-1.4-.5-2.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l12.8 64.2c9.6 1 19 4.9 26.6 11.8c11.7 10.6 23 21.6 33.9 33.1c1.6-1.6 3.3-3.2 5-4.8zM325.2 210.7c3.8-6.2 7.9-12.5 12.3-18.7H32l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4zm128.4-78.9c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 407.9 390.3 480 480 480c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 401c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [320, 512, [], \"e4c5\", \"M120 0h80c13.3 0 24 10.7 24 24V64H96V24c0-13.3 10.7-24 24-24zM32 151.7c0-15.6 9-29.8 23.2-36.5l24.4-11.4c11-5.1 23-7.8 35.1-7.8h90.6c12.1 0 24.1 2.7 35.1 7.8l24.4 11.4c14.1 6.6 23.2 20.8 23.2 36.5c0 14.4-7.5 27-18.9 34.1c11.5 8.8 18.9 22.6 18.9 38.2c0 16.7-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48c0-16.7 8.5-31.4 21.5-40C40.5 415.4 32 400.7 32 384s8.5-31.4 21.5-40C40.5 335.4 32 320.7 32 304s8.5-31.4 21.5-40C40.5 255.4 32 240.7 32 224c0-15.6 7.4-29.4 18.9-38.2C39.5 178.7 32 166.1 32 151.7zM96 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H64zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"]\n};\nvar faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"]\n};\nvar faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H569c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0H122.2zM260.9 64H379.1l10.4 104h-139L260.9 64zM202.3 168H101.4L122.2 64h90.4L202.3 168zM91.8 216H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104-169.4 0 10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l31.4-6.3L517.8 64l20.8 104z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"]\n};\nvar faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nvar faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nvar faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64H440.6L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0h56.2c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6H144l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4H46c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"]\n};\nvar faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4l107.1-99.9c3.8-3.5 8.7-5.5 13.8-5.5s10.1 2 13.8 5.5l107.1 99.9c4.5 4.2 7.1 10.1 7.1 16.3c0 12.3-10 22.3-22.3 22.3H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H150.3C138 256 128 246 128 233.7c0-6.2 2.6-12.1 7.1-16.3z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64H80V384H304V64z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nvar faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"]\n};\nvar faHamburger = faBurger;\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184H64v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nvar faRupee = faRupeeSign;\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nvar faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM413.6 421.9L128 196.9V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nvar faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"]\n};\nvar faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [576, 512, [128008], \"f6be\", \"M320 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L280 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128v0V32 12 10.7C352 4.8 356.7 .1 362.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L384 21.3l27.2 36.3L416 64h64l4.8-6.4L512 21.3 524.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C539.3 .1 544 4.8 544 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c53 0 96 43 96 96s-43 96-96 96H139.6c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-53 0-96-43-96-96s43-96 96-96h39.8c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0H256c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6V448h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H160 80c-17.7 0-32-14.3-32-32s14.3-32 32-32h48V348.4C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7H231.9l-5.3-64H93.4l-5.3 64z\"]\n};\nvar faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nvar faFastForward = faForwardFast;\nvar faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6H464c26.5 0 48-21.5 48-48V256h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V208zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nvar faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nvar faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"]\n};\nvar faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nvar faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM352 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM96 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H192v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C64 35.2 153.6 0 288 0zM128 160v96c0 17.7 14.3 32 32 32H272V128H160c-17.7 0-32 14.3-32 32zM304 288H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H304V288zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"]\n};\nvar faStoreAlt = faShop;\nvar faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSave = faFloppyDisk;\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"]\n};\nvar faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288H439.6zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416H56.7l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faSortAsc = faSortUp;\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCommenting = faCommentDots;\nvar faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3l0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v48 16 48c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nvar faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nvar faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"]\n};\nvar faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.4 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nvar faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [512, 512, [\"calendar-times\"], \"f273\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM337 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nvar faUserCog = faUserGear;\nvar faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V108.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"]\n};\nvar faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M64 128V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H224 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nvar faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nvar faDigging = faPersonDigging;\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nvar faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"]\n};\nvar faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nvar faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [512, 512, [], \"e1a8\", \"M336 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V381c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"]\n};\nvar faTh = faTableCells;\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z\"]\n};\nvar faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"]\n};\nvar faBible = faBookBible;\nvar faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nvar faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faFemale = faPersonDress;\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1h10.7c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32h-2.7c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64H544L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9H162.9c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2V384z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H46c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nvar faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nvar faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nvar faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nvar faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8l0 0-133.9-146 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65V149.1c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0h-76c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8V164c0 23.2 8.4 45.6 23.6 63.1l56 64.2 0 0 83.3 95.6 0 0 91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64V213.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1V448c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3V64z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8h49z\"]\n};\nvar faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faCameraAlt = faCamera;\nvar faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"]\n};\nvar faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"]\n};\nvar faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H416L288 288V512H32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nvar faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H96V64zm448 0v64h32c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H544v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"]\n};\nvar faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faListAlt = faRectangleList;\nvar faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [512, 512, [], \"f271\", \"M128 32V64H80c-26.5 0-48 21.5-48 48v48H480V112c0-26.5-21.5-48-48-48H384V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H192V32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 192H32V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V192zM256 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H176c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9L117.5 269.8c-3.5-3.8-5.5-8.7-5.5-13.8s2-10.1 5.5-13.8l99.9-107.1c4.2-4.5 10.1-7.1 16.3-7.1c12.3 0 22.3 10 22.3 22.3l0 57.7 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 57.7c0 12.3-10 22.3-22.3 22.3c-6.2 0-12.1-2.6-16.3-7.1z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSubway = faTrainSubway;\nvar faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faSubtract = faMinus;\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H60.2C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h4L60 384H196L180 256h4c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.8l32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24H488c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416H336zM304 208v51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384H462.5l-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7V208c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16v16H424V208c0-8.8-7.2-16-16-16H392c-8.8 0-16 7.2-16 16v16H352V208c0-8.8-7.2-16-16-16H320c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16v32H384V304z\"]\n};\nvar faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nvar faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"]\n};\nvar faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faCog = faGear;\nvar faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.1 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0h-1.8c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"]\n};\nvar faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"]\n};\nvar faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"]\n};\nvar faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nvar faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H344L238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H77.6c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"]\n};\nvar faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nvar faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V144c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h11.5c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm208 96H96V320H288V192z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nvar faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nvar faSlidersH = faSliders;\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nvar faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"]\n};\nvar faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128v64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V320c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6V128c0-35.3-28.7-64-64-64H64zm64 112l0 160c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nvar faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1v36.1l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9v32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3v33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V416 345.5 312.8 249.5 216.8 153.5 120.8 64 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64V288H19.2C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384H320V288H128V64H448V96h64V64c0-35.3-28.7-64-64-64H128zM512 128H400c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V256H544c-17.7 0-32-14.3-32-32V128zm32 0v96h96l-96-96z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4V144c-49.6-18.1-104-18.1-153.6 0v54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V336zm0 96c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V432zM144 320h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V336zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V432z\"]\n};\nvar faTeletype = faTty;\nvar faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"]\n};\nvar faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nvar faHiking = faPersonHiking;\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nvar faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"]\n};\nvar faTram = faCableCar;\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nvar faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMeh = faFaceMeh;\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"]\n};\nvar faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nvar faBookDead = faBookSkull;\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nvar faCutlery = faUtensils;\nvar faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nvar faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nvar faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192H96l0 288c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32l0-288h72c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nvar faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"]\n};\nvar faZap = faBolt;\nvar faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM73 156.5L66.4 64H317.6L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nvar faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"]\n};\nvar faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.2C48.8 31.5 29 27.6 14.3 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [640, 512, [], \"f7ab\", \"M64 464V316.9c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H112c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H384c-17.7 0-32 14.3-32 32V352c0 53-43 96-96 96s-96-43-96-96V160c0-17.7-14.3-32-32-32H48z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64V304v48 80c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L352 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4V64c0-17.7-14.3-32-32-32H64z\"]\n};\nvar faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6L269.8 394.5c-3.8 3.5-8.7 5.5-13.8 5.5s-10.1-2-13.8-5.5L135.1 294.6c-4.5-4.2-7.1-10.1-7.1-16.3c0-12.3 10-22.3 22.3-22.3l57.7 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 57.7 0c12.3 0 22.3 10 22.3 22.3c0 6.2-2.6 12.1-7.1 16.3z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nvar faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"]\n};\nvar faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h42.8c-6.6-5.9-10.8-14.4-10.8-24V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V488c0 9.6-4.2 18.1-10.8 24H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24V448H160v40c0 9.6-4.2 18.1-10.8 24H362.8zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416v16c0 26.5-21.5 48-48 48H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384H96c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H32C14.3 96 0 110.3 0 128V352c0 17.7 14.3 32 32 32z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88H96c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400H240L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32h-8.5zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H281.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432H64L22.6 473.4z\"]\n};\nvar faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88v40H336V88c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zm-48 40V88c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56v40h28.1c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9V304H384V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H192V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H0V227.9c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1H128zM0 416V336H128v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H320v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H512v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAutomobile = faCar;\nvar faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nvar faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H183.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176H337.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nvar faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nvar faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0H133.9c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0H487.4C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"]\n};\nvar faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248v3.3l69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5H296c-37.1 0-67.6 28-71.6 64H224V248c0 22.1 17.9 40 40 40s40-17.9 40-40V176c0 0 0-.1 0-.1V160l16 0 136 0c0 0 0 0 .1 0H464c44.2 0 80 35.8 80 80v8zM336 192v56c0 39.8-32.2 72-72 72s-72-32.2-72-72V129.4c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1H384c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16H432c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8v-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nvar faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nvar faTint = faDroplet;\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nvar faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zM0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"]\n};\nvar faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nvar faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M32 192V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V192c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144H80L96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96h32c8.8 0 16-7.2 16-16V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432H384l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H38.6C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nvar faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16H80c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H368c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288H96z\"]\n};\nvar faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nvar faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"]\n};\nvar faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nvar faChain = faLink;\nvar faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"]\n};\nvar faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"]\n};\nvar faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [640, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M480 288c-50.1 0-93.6 28.8-114.6 70.8L132.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C535.8 297.6 509 288 480 288zM113.3 151.9L354.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H357c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L152.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32c-6.3-6.3-9.7-14.9-9.4-23.8s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8c-24-24-37.5-56.6-37.5-90.5v-2.7c0-22.8 6.1-44.9 17.3-64.3zM480 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32H360V134.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V32H120.1C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faFileEdit = faFilePen;\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"]\n};\nvar faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm368 96H96V320H448V192z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H176c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nvar faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faListDots = faListUl;\nvar faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96H592c26.5 0 48 21.5 48 48V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48H166.3L302.2 5.4zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H408c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400H80L3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM38.6 473.4L80 432H368l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H54.6C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"]\n};\nvar faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faTasks = faListCheck;\nvar faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H472c13.3 0 24 10.7 24 24s-10.7 24-24 24H443.8c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nvar faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nvar faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M272 0H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128H192v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z\"]\n};\nvar faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faGripHorizontal = faGrip;\nvar faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224H305.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144h80V34.7C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2H384c-17.7 0-32-14.3-32-32V224zM80 96c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V384c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V112C0 67.8 35.8 32 80 32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H80z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faChildRifle = faChildCombatant;\nvar faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"]\n};\nvar faAdd = faPlus;\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"]\n};\nvar faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"]\n};\nvar faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nvar faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nvar faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"]\n};\nvar faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"]\n};\nvar faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6c.5-1.7 .7-3.5 .7-5.4c0-27.6-11-54.1-30.5-73.7L512 320c-20.5-20.5-32-48.3-32-77.3V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM160 242.7c0 29-11.5 56.8-32 77.3l-1.5 1.5C107 341 96 367.5 96 395.2c0 11.5 9.3 20.8 20.8 20.8H406.2L160 222.1v20.7zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0H400c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H320.7l89.6 64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288H67.5c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1l-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1l.1 0 29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5l0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7V390.3zM102.5 448H281.5L192 313.7 102.5 448zm128-192L320 390.3V121.7L230.5 256zM281.5 64H102.5L192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6h10c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"]\n};\nvar faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm112 96H96V320h96V192z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faPercentage = faPercent;\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM83 297.5L66.4 64H317.6L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"]\n};\nvar faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nvar faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSyncAlt = faRotate;\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8h-.7c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCogs = faGears;\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"]\n};\nvar faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nvar faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nvar faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192V128z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nvar faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"]\n};\nvar faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H224V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nvar faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faBiking = faPersonBiking;\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6v29.1L364.3 320h29.1c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nvar faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"]\n};\nvar faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"]\n};\nvar faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nvar faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nvar faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H367.9zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nvar faHaykal = faBahai;\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-366.1-8.3a.5 .5 0 1 1 -.9 .1 .5 .5 0 1 1 .9-.1z\"]\n};\nvar faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"]\n};\nvar faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nvar faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"]\n};\nvar faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nvar faQuran = faBookQuran;\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nvar faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288H584.4L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320H199.3L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.2c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V169.7L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nvar faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"]\n};\nvar faThList = faTableList;\nvar faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM202.9 176.8c6.5-2.2 13.7 .1 17.9 5.6L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2zm173.1 38c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.2-.4-23.7-4.4-32.6-7.4l0 0 0 0c-1.4-.5-2.7-.9-4-1.4c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.7 .6 3.3 1.1 4.9 1.6l0 0 0 0c9.1 3.1 15.6 5.3 22.6 5.5c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4c-7.2-2.2-16.7-5-24.3-9.6c-9-5.4-17.7-14.7-17.7-29.4c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c10 .2 19.7 2.3 27.9 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.3-1.9-14.1-3.3-20.1-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9zm-272 0c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.3-.4-24.2-4.5-33.2-7.6l0 0 0 0c-1.3-.4-2.5-.8-3.6-1.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.4 .5 2.8 .9 4.1 1.4l0 0 0 0c9.5 3.2 16.5 5.6 23.7 5.8c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4 0 0c-7.2-2.2-16.7-5-24.3-9.6C80.8 239 72.1 229.7 72 215c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c9.5 .1 22.2 2.1 31.1 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-6.6-1.8-16.8-3.3-23.3-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9z\"]\n};\nvar faSms = faCommentSms;\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm272 96H96V320H352V192z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"]\n};\nvar faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"]\n};\nvar faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"]\n};\nvar faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V83.8c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nvar faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"arrow-turn-right\", \"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nvar faArrowTurnRight = faShare;\nvar faMailForward = faShare;\nvar faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H104l0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nvar faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nvar faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7v-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8 0 0 0 0 43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4H224 210.7l0 0H179l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352v8c0 83.9-68.1 152-152 152H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h92c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H56c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H224l0 0 0 0h93.2L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5h88l0-192c0-17.7-14.3-32-32-32H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192h88c9.6 0 18.2 5.7 22 14.5z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H461.7c11.6 36 3.1 77-25.4 105.5L320 413.8V448zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"]\n};\nvar faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBandAid = faBandage;\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [512, 512, [], \"f272\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM344 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H168c-13.3 0-24 10.7-24 24s10.7 24 24 24H344z\"]\n};\nvar faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64C14.3 64 0 49.7 0 32zm96 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H240zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H112zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H368zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8H328z\"]\n};\nvar faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faAllergies = faHandDots;\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6h-19c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6H48C21.5 0 0 21.5 0 48V224v22.4V256H9.6 374.4 384v-9.6V224 48c0-26.5-21.5-48-48-48H230.5c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"]\n};\nvar faUserAlt = faUserLarge;\nvar faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"]\n};\nvar faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96zM160.3 256H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7V479.2z\"]\n};\nvar faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nvar faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nvar faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [64, 512, [10069, 10071, 61738], \"21\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H448c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H64c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32H99.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224H412.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H448c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H64c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32V99.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480H96c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3L574.4 311c-8.9-7.6-19.1-13.6-30.4-17.6v-21c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v21c-11.2 4-21.5 10-30.4 17.6l-18.2-10.5c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l18.2 10.5c-1 5.7-1.6 11.6-1.6 17.6s.6 11.9 1.6 17.5l-18.2 10.5c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3L449.6 457c8.9 7.6 19.2 13.6 30.4 17.6v21c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-21c11.2-4 21.5-10 30.4-17.6l18.2 10.5c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-18.2-10.5c1-5.7 1.6-11.6 1.6-17.5s-.6-11.9-1.6-17.6l18.2-10.5zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"]\n};\nvar faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32V49.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nvar faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32h96c123.7 0 224 100.3 224 224s-100.3 224-224 224H64c-35.3 0-64-28.7-64-64V96zm160 0H64V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nvar faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"]\n};\nvar faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0V96L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm-64-64c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H224zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32H352c88.4 0 160-71.6 160-160V226.3c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64v88c0 22.1 17.9 40 40 40s40-17.9 40-40V160c0-8.8 7.2-16 16-16s16 7.2 16 16v56c0 39.8-32.2 72-72 72z\"]\n};\nvar faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nvar faHandshakeAlt = faHandshakeSimple;\nvar faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nvar faVideoCamera = faVideo;\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5h88l0 192c0 17.7-14.3 32-32 32H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192h88c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0: fa0,\n fa1: fa1,\n fa2: fa2,\n fa3: fa3,\n fa4: fa4,\n fa5: fa5,\n fa6: fa6,\n fa7: fa7,\n fa8: fa8,\n fa9: fa9,\n faFillDrip: faFillDrip,\n faArrowsToCircle: faArrowsToCircle,\n faCircleChevronRight: faCircleChevronRight,\n faChevronCircleRight: faChevronCircleRight,\n faAt: faAt,\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faTextHeight: faTextHeight,\n faUserXmark: faUserXmark,\n faUserTimes: faUserTimes,\n faStethoscope: faStethoscope,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faInfo: faInfo,\n faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n faCompressAlt: faCompressAlt,\n faExplosion: faExplosion,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faWaveSquare: faWaveSquare,\n faRing: faRing,\n faBuildingUn: faBuildingUn,\n faDiceThree: faDiceThree,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faAnchorCircleCheck: faAnchorCircleCheck,\n faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n faVolleyball: faVolleyball,\n faVolleyballBall: faVolleyballBall,\n faArrowsUpToLine: faArrowsUpToLine,\n faSortDown: faSortDown,\n faSortDesc: faSortDesc,\n faCircleMinus: faCircleMinus,\n faMinusCircle: faMinusCircle,\n faDoorOpen: faDoorOpen,\n faRightFromBracket: faRightFromBracket,\n faSignOutAlt: faSignOutAlt,\n faAtom: faAtom,\n faSoap: faSoap,\n faIcons: faIcons,\n faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faBridgeCircleCheck: faBridgeCircleCheck,\n faPumpMedical: faPumpMedical,\n faFingerprint: faFingerprint,\n faHandPointRight: faHandPointRight,\n faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n faSearchLocation: faSearchLocation,\n faForwardStep: faForwardStep,\n faStepForward: faStepForward,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFlagCheckered: faFlagCheckered,\n faFootball: faFootball,\n faFootballBall: faFootballBall,\n faSchoolCircleExclamation: faSchoolCircleExclamation,\n faCrop: faCrop,\n faAnglesDown: faAnglesDown,\n faAngleDoubleDown: faAngleDoubleDown,\n faUsersRectangle: faUsersRectangle,\n faPeopleRoof: faPeopleRoof,\n faPeopleLine: faPeopleLine,\n faBeerMugEmpty: faBeerMugEmpty,\n faBeer: faBeer,\n faDiagramPredecessor: faDiagramPredecessor,\n faArrowUpLong: faArrowUpLong,\n faLongArrowUp: faLongArrowUp,\n faFireFlameSimple: faFireFlameSimple,\n faBurn: faBurn,\n faPerson: faPerson,\n faMale: faMale,\n faLaptop: faLaptop,\n faFileCsv: faFileCsv,\n faMenorah: faMenorah,\n faTruckPlane: faTruckPlane,\n faRecordVinyl: faRecordVinyl,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faBong: faBong,\n faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n faPastafarianism: faPastafarianism,\n faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n faSpoon: faSpoon,\n faUtensilSpoon: faUtensilSpoon,\n faJarWheat: faJarWheat,\n faEnvelopesBulk: faEnvelopesBulk,\n faMailBulk: faMailBulk,\n faFileCircleExclamation: faFileCircleExclamation,\n faCircleH: faCircleH,\n faHospitalSymbol: faHospitalSymbol,\n faPager: faPager,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faStrikethrough: faStrikethrough,\n faK: faK,\n faLandmarkFlag: faLandmarkFlag,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faBackward: faBackward,\n faCaretRight: faCaretRight,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faCodePullRequest: faCodePullRequest,\n faClipboardList: faClipboardList,\n faTruckRampBox: faTruckRampBox,\n faTruckLoading: faTruckLoading,\n faUserCheck: faUserCheck,\n faVialVirus: faVialVirus,\n faSheetPlastic: faSheetPlastic,\n faBlog: faBlog,\n faUserNinja: faUserNinja,\n faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n faScrollTorah: faScrollTorah,\n faTorah: faTorah,\n faBroomBall: faBroomBall,\n faQuidditch: faQuidditch,\n faQuidditchBroomBall: faQuidditchBroomBall,\n faToggleOff: faToggleOff,\n faBoxArchive: faBoxArchive,\n faArchive: faArchive,\n faPersonDrowning: faPersonDrowning,\n faArrowDown91: faArrowDown91,\n faSortNumericDesc: faSortNumericDesc,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faSprayCan: faSprayCan,\n faTruckMonster: faTruckMonster,\n faW: faW,\n faEarthAfrica: faEarthAfrica,\n faGlobeAfrica: faGlobeAfrica,\n faRainbow: faRainbow,\n faCircleNotch: faCircleNotch,\n faTabletScreenButton: faTabletScreenButton,\n faTabletAlt: faTabletAlt,\n faPaw: faPaw,\n faCloud: faCloud,\n faTrowelBricks: faTrowelBricks,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faHospitalUser: faHospitalUser,\n faTentArrowLeftRight: faTentArrowLeftRight,\n faGavel: faGavel,\n faLegal: faLegal,\n faBinoculars: faBinoculars,\n faMicrophoneSlash: faMicrophoneSlash,\n faBoxTissue: faBoxTissue,\n faMotorcycle: faMotorcycle,\n faBellConcierge: faBellConcierge,\n faConciergeBell: faConciergeBell,\n faPenRuler: faPenRuler,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n faMarsAndVenusBurst: faMarsAndVenusBurst,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faScissors: faScissors,\n faCut: faCut,\n faSunPlantWilt: faSunPlantWilt,\n faToiletsPortable: faToiletsPortable,\n faHockeyPuck: faHockeyPuck,\n faTable: faTable,\n faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n faTachographDigital: faTachographDigital,\n faDigitalTachograph: faDigitalTachograph,\n faUsersSlash: faUsersSlash,\n faClover: faClover,\n faReply: faReply,\n faMailReply: faMailReply,\n faStarAndCrescent: faStarAndCrescent,\n faHouseFire: faHouseFire,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faHelicopter: faHelicopter,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFileCircleQuestion: faFileCircleQuestion,\n faLaptopCode: faLaptopCode,\n faSwatchbook: faSwatchbook,\n faPrescriptionBottle: faPrescriptionBottle,\n faBars: faBars,\n faNavicon: faNavicon,\n faPeopleGroup: faPeopleGroup,\n faHourglassEnd: faHourglassEnd,\n faHourglass3: faHourglass3,\n faHeartCrack: faHeartCrack,\n faHeartBroken: faHeartBroken,\n faSquareUpRight: faSquareUpRight,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faFilm: faFilm,\n faRulerHorizontal: faRulerHorizontal,\n faPeopleRobbery: faPeopleRobbery,\n faLightbulb: faLightbulb,\n faCaretLeft: faCaretLeft,\n faCircleExclamation: faCircleExclamation,\n faExclamationCircle: faExclamationCircle,\n faSchoolCircleXmark: faSchoolCircleXmark,\n faArrowRightFromBracket: faArrowRightFromBracket,\n faSignOut: faSignOut,\n faCircleChevronDown: faCircleChevronDown,\n faChevronCircleDown: faChevronCircleDown,\n faUnlockKeyhole: faUnlockKeyhole,\n faUnlockAlt: faUnlockAlt,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faHeadphonesSimple: faHeadphonesSimple,\n faHeadphonesAlt: faHeadphonesAlt,\n faSitemap: faSitemap,\n faCircleDollarToSlot: faCircleDollarToSlot,\n faDonate: faDonate,\n faMemory: faMemory,\n faRoadSpikes: faRoadSpikes,\n faFireBurner: faFireBurner,\n faFlag: faFlag,\n faHanukiah: faHanukiah,\n faFeather: faFeather,\n faVolumeLow: faVolumeLow,\n faVolumeDown: faVolumeDown,\n faCommentSlash: faCommentSlash,\n faCloudSunRain: faCloudSunRain,\n faCompress: faCompress,\n faWheatAwn: faWheatAwn,\n faWheatAlt: faWheatAlt,\n faAnkh: faAnkh,\n faHandsHoldingChild: faHandsHoldingChild,\n faAsterisk: faAsterisk,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faPesetaSign: faPesetaSign,\n faHeading: faHeading,\n faHeader: faHeader,\n faGhost: faGhost,\n faList: faList,\n faListSquares: faListSquares,\n faSquarePhoneFlip: faSquarePhoneFlip,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faCartPlus: faCartPlus,\n faGamepad: faGamepad,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faEgg: faEgg,\n faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n faCampground: faCampground,\n faFolderPlus: faFolderPlus,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPaintbrush: faPaintbrush,\n faPaintBrush: faPaintBrush,\n faLock: faLock,\n faGasPump: faGasPump,\n faHotTubPerson: faHotTubPerson,\n faHotTub: faHotTub,\n faMapLocation: faMapLocation,\n faMapMarked: faMapMarked,\n faHouseFloodWater: faHouseFloodWater,\n faTree: faTree,\n faBridgeLock: faBridgeLock,\n faSackDollar: faSackDollar,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faCarSide: faCarSide,\n faShareNodes: faShareNodes,\n faShareAlt: faShareAlt,\n faHeartCircleMinus: faHeartCircleMinus,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faMicroscope: faMicroscope,\n faSink: faSink,\n faBagShopping: faBagShopping,\n faShoppingBag: faShoppingBag,\n faArrowDownZA: faArrowDownZA,\n faSortAlphaDesc: faSortAlphaDesc,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faMitten: faMitten,\n faPersonRays: faPersonRays,\n faUsers: faUsers,\n faEyeSlash: faEyeSlash,\n faFlaskVial: faFlaskVial,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faOm: faOm,\n faWorm: faWorm,\n faHouseCircleXmark: faHouseCircleXmark,\n faPlug: faPlug,\n faChevronUp: faChevronUp,\n faHandSpock: faHandSpock,\n faStopwatch: faStopwatch,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faBridgeCircleXmark: faBridgeCircleXmark,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faEarDeaf: faEarDeaf,\n faDeaf: faDeaf,\n faDeafness: faDeafness,\n faHardOfHearing: faHardOfHearing,\n faRoadCircleCheck: faRoadCircleCheck,\n faDiceFive: faDiceFive,\n faSquareRss: faSquareRss,\n faRssSquare: faRssSquare,\n faLandMineOn: faLandMineOn,\n faICursor: faICursor,\n faStamp: faStamp,\n faStairs: faStairs,\n faI: faI,\n faHryvniaSign: faHryvniaSign,\n faHryvnia: faHryvnia,\n faPills: faPills,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faTooth: faTooth,\n faV: faV,\n faBangladeshiTakaSign: faBangladeshiTakaSign,\n faBicycle: faBicycle,\n faStaffSnake: faStaffSnake,\n faRodAsclepius: faRodAsclepius,\n faRodSnake: faRodSnake,\n faStaffAesculapius: faStaffAesculapius,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faTruckMedical: faTruckMedical,\n faAmbulance: faAmbulance,\n faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n faSnowman: faSnowman,\n faMortarPestle: faMortarPestle,\n faRoadBarrier: faRoadBarrier,\n faSchool: faSchool,\n faIgloo: faIgloo,\n faJoint: faJoint,\n faAngleRight: faAngleRight,\n faHorse: faHorse,\n faQ: faQ,\n faG: faG,\n faNotesMedical: faNotesMedical,\n faTemperatureHalf: faTemperatureHalf,\n faTemperature2: faTemperature2,\n faThermometer2: faThermometer2,\n faThermometerHalf: faThermometerHalf,\n faDongSign: faDongSign,\n faCapsules: faCapsules,\n faPooStorm: faPooStorm,\n faPooBolt: faPooBolt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faMoneyBill: faMoneyBill,\n faBookmark: faBookmark,\n faAlignJustify: faAlignJustify,\n faUmbrellaBeach: faUmbrellaBeach,\n faHelmetUn: faHelmetUn,\n faBullseye: faBullseye,\n faBacon: faBacon,\n faHandPointDown: faHandPointDown,\n faArrowUpFromBracket: faArrowUpFromBracket,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faFileWaveform: faFileWaveform,\n faFileMedicalAlt: faFileMedicalAlt,\n faRadiation: faRadiation,\n faChartSimple: faChartSimple,\n faMarsStroke: faMarsStroke,\n faVial: faVial,\n faGauge: faGauge,\n faDashboard: faDashboard,\n faGaugeMed: faGaugeMed,\n faTachometerAltAverage: faTachometerAltAverage,\n faWandMagicSparkles: faWandMagicSparkles,\n faMagicWandSparkles: faMagicWandSparkles,\n faE: faE,\n faPenClip: faPenClip,\n faPenAlt: faPenAlt,\n faBridgeCircleExclamation: faBridgeCircleExclamation,\n faUser: faUser,\n faSchoolCircleCheck: faSchoolCircleCheck,\n faDumpster: faDumpster,\n faVanShuttle: faVanShuttle,\n faShuttleVan: faShuttleVan,\n faBuildingUser: faBuildingUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faHighlighter: faHighlighter,\n faKey: faKey,\n faBullhorn: faBullhorn,\n faGlobe: faGlobe,\n faSynagogue: faSynagogue,\n faPersonHalfDress: faPersonHalfDress,\n faRoadBridge: faRoadBridge,\n faLocationArrow: faLocationArrow,\n faC: faC,\n faTabletButton: faTabletButton,\n faBuildingLock: faBuildingLock,\n faPizzaSlice: faPizzaSlice,\n faMoneyBillWave: faMoneyBillWave,\n faChartArea: faChartArea,\n faAreaChart: faAreaChart,\n faHouseFlag: faHouseFlag,\n faPersonCircleMinus: faPersonCircleMinus,\n faBan: faBan,\n faCancel: faCancel,\n faCameraRotate: faCameraRotate,\n faSprayCanSparkles: faSprayCanSparkles,\n faAirFreshener: faAirFreshener,\n faStar: faStar,\n faRepeat: faRepeat,\n faCross: faCross,\n faBox: faBox,\n faVenusMars: faVenusMars,\n faArrowPointer: faArrowPointer,\n faMousePointer: faMousePointer,\n faMaximize: faMaximize,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faChargingStation: faChargingStation,\n faShapes: faShapes,\n faTriangleCircleSquare: faTriangleCircleSquare,\n faShuffle: faShuffle,\n faRandom: faRandom,\n faPersonRunning: faPersonRunning,\n faRunning: faRunning,\n faMobileRetro: faMobileRetro,\n faGripLinesVertical: faGripLinesVertical,\n faSpider: faSpider,\n faHandsBound: faHandsBound,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faPlaneCircleExclamation: faPlaneCircleExclamation,\n faXRay: faXRay,\n faSpellCheck: faSpellCheck,\n faSlash: faSlash,\n faComputerMouse: faComputerMouse,\n faMouse: faMouse,\n faArrowRightToBracket: faArrowRightToBracket,\n faSignIn: faSignIn,\n faShopSlash: faShopSlash,\n faStoreAltSlash: faStoreAltSlash,\n faServer: faServer,\n faVirusCovidSlash: faVirusCovidSlash,\n faShopLock: faShopLock,\n faHourglassStart: faHourglassStart,\n faHourglass1: faHourglass1,\n faBlenderPhone: faBlenderPhone,\n faBuildingWheat: faBuildingWheat,\n faPersonBreastfeeding: faPersonBreastfeeding,\n faRightToBracket: faRightToBracket,\n faSignInAlt: faSignInAlt,\n faVenus: faVenus,\n faPassport: faPassport,\n faHeartPulse: faHeartPulse,\n faHeartbeat: faHeartbeat,\n faPeopleCarryBox: faPeopleCarryBox,\n faPeopleCarry: faPeopleCarry,\n faTemperatureHigh: faTemperatureHigh,\n faMicrochip: faMicrochip,\n faCrown: faCrown,\n faWeightHanging: faWeightHanging,\n faXmarksLines: faXmarksLines,\n faFilePrescription: faFilePrescription,\n faWeightScale: faWeightScale,\n faWeight: faWeight,\n faUserGroup: faUserGroup,\n faUserFriends: faUserFriends,\n faArrowUpAZ: faArrowUpAZ,\n faSortAlphaUp: faSortAlphaUp,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faWheelchair: faWheelchair,\n faCircleArrowUp: faCircleArrowUp,\n faArrowCircleUp: faArrowCircleUp,\n faToggleOn: faToggleOn,\n faPersonWalking: faPersonWalking,\n faWalking: faWalking,\n faL: faL,\n faFire: faFire,\n faBedPulse: faBedPulse,\n faProcedures: faProcedures,\n faShuttleSpace: faShuttleSpace,\n faSpaceShuttle: faSpaceShuttle,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faHeartCirclePlus: faHeartCirclePlus,\n faCodeFork: faCodeFork,\n faCity: faCity,\n faMicrophoneLines: faMicrophoneLines,\n faMicrophoneAlt: faMicrophoneAlt,\n faPepperHot: faPepperHot,\n faUnlock: faUnlock,\n faColonSign: faColonSign,\n faHeadset: faHeadset,\n faStoreSlash: faStoreSlash,\n faRoadCircleXmark: faRoadCircleXmark,\n faUserMinus: faUserMinus,\n faMarsStrokeUp: faMarsStrokeUp,\n faMarsStrokeV: faMarsStrokeV,\n faChampagneGlasses: faChampagneGlasses,\n faGlassCheers: faGlassCheers,\n faClipboard: faClipboard,\n faHouseCircleExclamation: faHouseCircleExclamation,\n faFileArrowUp: faFileArrowUp,\n faFileUpload: faFileUpload,\n faWifi: faWifi,\n faWifi3: faWifi3,\n faWifiStrong: faWifiStrong,\n faBath: faBath,\n faBathtub: faBathtub,\n faUnderline: faUnderline,\n faUserPen: faUserPen,\n faUserEdit: faUserEdit,\n faSignature: faSignature,\n faStroopwafel: faStroopwafel,\n faBold: faBold,\n faAnchorLock: faAnchorLock,\n faBuildingNgo: faBuildingNgo,\n faManatSign: faManatSign,\n faNotEqual: faNotEqual,\n faBorderTopLeft: faBorderTopLeft,\n faBorderStyle: faBorderStyle,\n faMapLocationDot: faMapLocationDot,\n faMapMarkedAlt: faMapMarkedAlt,\n faJedi: faJedi,\n faSquarePollVertical: faSquarePollVertical,\n faPoll: faPoll,\n faMugHot: faMugHot,\n faCarBattery: faCarBattery,\n faBatteryCar: faBatteryCar,\n faGift: faGift,\n faDiceTwo: faDiceTwo,\n faChessQueen: faChessQueen,\n faGlasses: faGlasses,\n faChessBoard: faChessBoard,\n faBuildingCircleCheck: faBuildingCircleCheck,\n faPersonChalkboard: faPersonChalkboard,\n faMarsStrokeRight: faMarsStrokeRight,\n faMarsStrokeH: faMarsStrokeH,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faCloudShowersWater: faCloudShowersWater,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faHandsBubbles: faHandsBubbles,\n faHandsWash: faHandsWash,\n faLessThanEqual: faLessThanEqual,\n faTrain: faTrain,\n faEyeLowVision: faEyeLowVision,\n faLowVision: faLowVision,\n faCrow: faCrow,\n faSailboat: faSailboat,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faToriiGate: faToriiGate,\n faFrog: faFrog,\n faBucket: faBucket,\n faImage: faImage,\n faMicrophone: faMicrophone,\n faCow: faCow,\n faCaretUp: faCaretUp,\n faScrewdriver: faScrewdriver,\n faFolderClosed: faFolderClosed,\n faHouseTsunami: faHouseTsunami,\n faSquareNfi: faSquareNfi,\n faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n faMartiniGlass: faMartiniGlass,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faRotateLeft: faRotateLeft,\n faRotateBack: faRotateBack,\n faRotateBackward: faRotateBackward,\n faUndoAlt: faUndoAlt,\n faTableColumns: faTableColumns,\n faColumns: faColumns,\n faLemon: faLemon,\n faHeadSideMask: faHeadSideMask,\n faHandshake: faHandshake,\n faGem: faGem,\n faDolly: faDolly,\n faDollyBox: faDollyBox,\n faSmoking: faSmoking,\n faMinimize: faMinimize,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faMonument: faMonument,\n faSnowplow: faSnowplow,\n faAnglesRight: faAnglesRight,\n faAngleDoubleRight: faAngleDoubleRight,\n faCannabis: faCannabis,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faTablets: faTablets,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faEur: faEur,\n faEuro: faEuro,\n faChair: faChair,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faCompassDrafting: faCompassDrafting,\n faDraftingCompass: faDraftingCompass,\n faPlateWheat: faPlateWheat,\n faIcicles: faIcicles,\n faPersonShelter: faPersonShelter,\n faNeuter: faNeuter,\n faIdBadge: faIdBadge,\n faMarker: faMarker,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faHelicopterSymbol: faHelicopterSymbol,\n faUniversalAccess: faUniversalAccess,\n faCircleChevronUp: faCircleChevronUp,\n faChevronCircleUp: faChevronCircleUp,\n faLariSign: faLariSign,\n faVolcano: faVolcano,\n faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n faSterlingSign: faSterlingSign,\n faGbp: faGbp,\n faPoundSign: faPoundSign,\n faViruses: faViruses,\n faSquarePersonConfined: faSquarePersonConfined,\n faUserTie: faUserTie,\n faArrowDownLong: faArrowDownLong,\n faLongArrowDown: faLongArrowDown,\n faTentArrowDownToLine: faTentArrowDownToLine,\n faCertificate: faCertificate,\n faReplyAll: faReplyAll,\n faMailReplyAll: faMailReplyAll,\n faSuitcase: faSuitcase,\n faPersonSkating: faPersonSkating,\n faSkating: faSkating,\n faFilterCircleDollar: faFilterCircleDollar,\n faFunnelDollar: faFunnelDollar,\n faCameraRetro: faCameraRetro,\n faCircleArrowDown: faCircleArrowDown,\n faArrowCircleDown: faArrowCircleDown,\n faFileImport: faFileImport,\n faArrowRightToFile: faArrowRightToFile,\n faSquareArrowUpRight: faSquareArrowUpRight,\n faExternalLinkSquare: faExternalLinkSquare,\n faBoxOpen: faBoxOpen,\n faScroll: faScroll,\n faSpa: faSpa,\n faLocationPinLock: faLocationPinLock,\n faPause: faPause,\n faHillAvalanche: faHillAvalanche,\n faTemperatureEmpty: faTemperatureEmpty,\n faTemperature0: faTemperature0,\n faThermometer0: faThermometer0,\n faThermometerEmpty: faThermometerEmpty,\n faBomb: faBomb,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n faBalanceScaleRight: faBalanceScaleRight,\n faSubscript: faSubscript,\n faDiamondTurnRight: faDiamondTurnRight,\n faDirections: faDirections,\n faBurst: faBurst,\n faHouseLaptop: faHouseLaptop,\n faLaptopHouse: faLaptopHouse,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faMoneyBills: faMoneyBills,\n faSmog: faSmog,\n faCrutch: faCrutch,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faCloudArrowUp: faCloudArrowUp,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faPalette: faPalette,\n faArrowsTurnRight: faArrowsTurnRight,\n faVest: faVest,\n faFerry: faFerry,\n faArrowsDownToPeople: faArrowsDownToPeople,\n faSeedling: faSeedling,\n faSprout: faSprout,\n faLeftRight: faLeftRight,\n faArrowsAltH: faArrowsAltH,\n faBoxesPacking: faBoxesPacking,\n faCircleArrowLeft: faCircleArrowLeft,\n faArrowCircleLeft: faArrowCircleLeft,\n faGroupArrowsRotate: faGroupArrowsRotate,\n faBowlFood: faBowlFood,\n faCandyCane: faCandyCane,\n faArrowDownWideShort: faArrowDownWideShort,\n faSortAmountAsc: faSortAmountAsc,\n faSortAmountDown: faSortAmountDown,\n faCloudBolt: faCloudBolt,\n faThunderstorm: faThunderstorm,\n faTextSlash: faTextSlash,\n faRemoveFormat: faRemoveFormat,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faArrowsLeftRight: faArrowsLeftRight,\n faArrowsH: faArrowsH,\n faHouseLock: faHouseLock,\n faCloudArrowDown: faCloudArrowDown,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faChildren: faChildren,\n faChalkboard: faChalkboard,\n faBlackboard: faBlackboard,\n faUserLargeSlash: faUserLargeSlash,\n faUserAltSlash: faUserAltSlash,\n faEnvelopeOpen: faEnvelopeOpen,\n faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faMattressPillow: faMattressPillow,\n faGuaraniSign: faGuaraniSign,\n faArrowsRotate: faArrowsRotate,\n faRefresh: faRefresh,\n faSync: faSync,\n faFireExtinguisher: faFireExtinguisher,\n faCruzeiroSign: faCruzeiroSign,\n faGreaterThanEqual: faGreaterThanEqual,\n faShieldHalved: faShieldHalved,\n faShieldAlt: faShieldAlt,\n faBookAtlas: faBookAtlas,\n faAtlas: faAtlas,\n faVirus: faVirus,\n faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n faLayerGroup: faLayerGroup,\n faArrowsToDot: faArrowsToDot,\n faArchway: faArchway,\n faHeartCircleCheck: faHeartCircleCheck,\n faHouseChimneyCrack: faHouseChimneyCrack,\n faHouseDamage: faHouseDamage,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faMartiniGlassEmpty: faMartiniGlassEmpty,\n faGlassMartini: faGlassMartini,\n faCouch: faCouch,\n faCediSign: faCediSign,\n faItalic: faItalic,\n faChurch: faChurch,\n faCommentsDollar: faCommentsDollar,\n faDemocrat: faDemocrat,\n faZ: faZ,\n faPersonSkiing: faPersonSkiing,\n faSkiing: faSkiing,\n faRoadLock: faRoadLock,\n faA: faA,\n faTemperatureArrowDown: faTemperatureArrowDown,\n faTemperatureDown: faTemperatureDown,\n faFeatherPointed: faFeatherPointed,\n faFeatherAlt: faFeatherAlt,\n faP: faP,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faRectangleAd: faRectangleAd,\n faAd: faAd,\n faCircleArrowRight: faCircleArrowRight,\n faArrowCircleRight: faArrowCircleRight,\n faFilterCircleXmark: faFilterCircleXmark,\n faLocust: faLocust,\n faSort: faSort,\n faUnsorted: faUnsorted,\n faListOl: faListOl,\n faList12: faList12,\n faListNumeric: faListNumeric,\n faPersonDressBurst: faPersonDressBurst,\n faMoneyCheckDollar: faMoneyCheckDollar,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faVectorSquare: faVectorSquare,\n faBreadSlice: faBreadSlice,\n faLanguage: faLanguage,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faFilter: faFilter,\n faQuestion: faQuestion,\n faFileSignature: faFileSignature,\n faUpDownLeftRight: faUpDownLeftRight,\n faArrowsAlt: faArrowsAlt,\n faHouseChimneyUser: faHouseChimneyUser,\n faHandHoldingHeart: faHandHoldingHeart,\n faPuzzlePiece: faPuzzlePiece,\n faMoneyCheck: faMoneyCheck,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faCode: faCode,\n faWhiskeyGlass: faWhiskeyGlass,\n faGlassWhiskey: faGlassWhiskey,\n faBuildingCircleExclamation: faBuildingCircleExclamation,\n faMagnifyingGlassChart: faMagnifyingGlassChart,\n faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n faExternalLink: faExternalLink,\n faCubesStacked: faCubesStacked,\n faWonSign: faWonSign,\n faKrw: faKrw,\n faWon: faWon,\n faVirusCovid: faVirusCovid,\n faAustralSign: faAustralSign,\n faF: faF,\n faLeaf: faLeaf,\n faRoad: faRoad,\n faTaxi: faTaxi,\n faCab: faCab,\n faPersonCirclePlus: faPersonCirclePlus,\n faChartPie: faChartPie,\n faPieChart: faPieChart,\n faBoltLightning: faBoltLightning,\n faSackXmark: faSackXmark,\n faFileExcel: faFileExcel,\n faFileContract: faFileContract,\n faFishFins: faFishFins,\n faBuildingFlag: faBuildingFlag,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faPoop: faPoop,\n faLocationPin: faLocationPin,\n faMapMarker: faMapMarker,\n faKaaba: faKaaba,\n faToiletPaper: faToiletPaper,\n faHelmetSafety: faHelmetSafety,\n faHardHat: faHardHat,\n faHatHard: faHatHard,\n faEject: faEject,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faPlaneCircleCheck: faPlaneCircleCheck,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faChartLine: faChartLine,\n faLineChart: faLineChart,\n faMaskVentilator: faMaskVentilator,\n faArrowRight: faArrowRight,\n faSignsPost: faSignsPost,\n faMapSigns: faMapSigns,\n faCashRegister: faCashRegister,\n faPersonCircleQuestion: faPersonCircleQuestion,\n faH: faH,\n faTarp: faTarp,\n faScrewdriverWrench: faScrewdriverWrench,\n faTools: faTools,\n faArrowsToEye: faArrowsToEye,\n faPlugCircleBolt: faPlugCircleBolt,\n faHeart: faHeart,\n faMarsAndVenus: faMarsAndVenus,\n faHouseUser: faHouseUser,\n faHomeUser: faHomeUser,\n faDumpsterFire: faDumpsterFire,\n faHouseCrack: faHouseCrack,\n faMartiniGlassCitrus: faMartiniGlassCitrus,\n faCocktail: faCocktail,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faBottleWater: faBottleWater,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faToiletPaperSlash: faToiletPaperSlash,\n faAppleWhole: faAppleWhole,\n faAppleAlt: faAppleAlt,\n faKitchenSet: faKitchenSet,\n faR: faR,\n faTemperatureQuarter: faTemperatureQuarter,\n faTemperature1: faTemperature1,\n faThermometer1: faThermometer1,\n faThermometerQuarter: faThermometerQuarter,\n faCube: faCube,\n faBitcoinSign: faBitcoinSign,\n faShieldDog: faShieldDog,\n faSolarPanel: faSolarPanel,\n faLockOpen: faLockOpen,\n faElevator: faElevator,\n faMoneyBillTransfer: faMoneyBillTransfer,\n faMoneyBillTrendUp: faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal: faSquarePollHorizontal,\n faPollH: faPollH,\n faCircle: faCircle,\n faBackwardFast: faBackwardFast,\n faFastBackward: faFastBackward,\n faRecycle: faRecycle,\n faUserAstronaut: faUserAstronaut,\n faPlaneSlash: faPlaneSlash,\n faTrademark: faTrademark,\n faBasketball: faBasketball,\n faBasketballBall: faBasketballBall,\n faSatelliteDish: faSatelliteDish,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faMobileScreenButton: faMobileScreenButton,\n faMobileAlt: faMobileAlt,\n faVolumeHigh: faVolumeHigh,\n faVolumeUp: faVolumeUp,\n faUsersRays: faUsersRays,\n faWallet: faWallet,\n faClipboardCheck: faClipboardCheck,\n faFileAudio: faFileAudio,\n faBurger: faBurger,\n faHamburger: faHamburger,\n faWrench: faWrench,\n faBugs: faBugs,\n faRupeeSign: faRupeeSign,\n faRupee: faRupee,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faPlaneDeparture: faPlaneDeparture,\n faHandshakeSlash: faHandshakeSlash,\n faBookBookmark: faBookBookmark,\n faCodeBranch: faCodeBranch,\n faHatCowboy: faHatCowboy,\n faBridge: faBridge,\n faPhoneFlip: faPhoneFlip,\n faPhoneAlt: faPhoneAlt,\n faTruckFront: faTruckFront,\n faCat: faCat,\n faAnchorCircleExclamation: faAnchorCircleExclamation,\n faTruckField: faTruckField,\n faRoute: faRoute,\n faClipboardQuestion: faClipboardQuestion,\n faPanorama: faPanorama,\n faCommentMedical: faCommentMedical,\n faTeethOpen: faTeethOpen,\n faFileCircleMinus: faFileCircleMinus,\n faTags: faTags,\n faWineGlass: faWineGlass,\n faForwardFast: faForwardFast,\n faFastForward: faFastForward,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faSquareParking: faSquareParking,\n faParking: faParking,\n faHouseSignal: faHouseSignal,\n faBarsProgress: faBarsProgress,\n faTasksAlt: faTasksAlt,\n faFaucetDrip: faFaucetDrip,\n faCartFlatbed: faCartFlatbed,\n faDollyFlatbed: faDollyFlatbed,\n faBanSmoking: faBanSmoking,\n faSmokingBan: faSmokingBan,\n faTerminal: faTerminal,\n faMobileButton: faMobileButton,\n faHouseMedicalFlag: faHouseMedicalFlag,\n faBasketShopping: faBasketShopping,\n faShoppingBasket: faShoppingBasket,\n faTape: faTape,\n faBusSimple: faBusSimple,\n faBusAlt: faBusAlt,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faAudioDescription: faAudioDescription,\n faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n faFileShield: faFileShield,\n faUserSlash: faUserSlash,\n faPen: faPen,\n faTowerObservation: faTowerObservation,\n faFileCode: faFileCode,\n faSignal: faSignal,\n faSignal5: faSignal5,\n faSignalPerfect: faSignalPerfect,\n faBus: faBus,\n faHeartCircleXmark: faHeartCircleXmark,\n faHouseChimney: faHouseChimney,\n faHomeLg: faHomeLg,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faPrescription: faPrescription,\n faShop: faShop,\n faStoreAlt: faStoreAlt,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faVihara: faVihara,\n faScaleUnbalanced: faScaleUnbalanced,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faSortUp: faSortUp,\n faSortAsc: faSortAsc,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faPlantWilt: faPlantWilt,\n faDiamond: faDiamond,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandHoldingDollar: faHandHoldingDollar,\n faHandHoldingUsd: faHandHoldingUsd,\n faBacterium: faBacterium,\n faHandPointer: faHandPointer,\n faDrumSteelpan: faDrumSteelpan,\n faHandScissors: faHandScissors,\n faHandsPraying: faHandsPraying,\n faPrayingHands: faPrayingHands,\n faArrowRotateRight: faArrowRotateRight,\n faArrowRightRotate: faArrowRightRotate,\n faArrowRotateForward: faArrowRotateForward,\n faRedo: faRedo,\n faBiohazard: faBiohazard,\n faLocationCrosshairs: faLocationCrosshairs,\n faLocation: faLocation,\n faMarsDouble: faMarsDouble,\n faChildDress: faChildDress,\n faUsersBetweenLines: faUsersBetweenLines,\n faLungsVirus: faLungsVirus,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faPhone: faPhone,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faChildReaching: faChildReaching,\n faHeadSideVirus: faHeadSideVirus,\n faUserGear: faUserGear,\n faUserCog: faUserCog,\n faArrowUp19: faArrowUp19,\n faSortNumericUp: faSortNumericUp,\n faDoorClosed: faDoorClosed,\n faShieldVirus: faShieldVirus,\n faDiceSix: faDiceSix,\n faMosquitoNet: faMosquitoNet,\n faBridgeWater: faBridgeWater,\n faPersonBooth: faPersonBooth,\n faTextWidth: faTextWidth,\n faHatWizard: faHatWizard,\n faPenFancy: faPenFancy,\n faPersonDigging: faPersonDigging,\n faDigging: faDigging,\n faTrash: faTrash,\n faGaugeSimple: faGaugeSimple,\n faGaugeSimpleMed: faGaugeSimpleMed,\n faTachometerAverage: faTachometerAverage,\n faBookMedical: faBookMedical,\n faPoo: faPoo,\n faQuoteRight: faQuoteRight,\n faQuoteRightAlt: faQuoteRightAlt,\n faShirt: faShirt,\n faTShirt: faTShirt,\n faTshirt: faTshirt,\n faCubes: faCubes,\n faDivide: faDivide,\n faTengeSign: faTengeSign,\n faTenge: faTenge,\n faHeadphones: faHeadphones,\n faHandsHolding: faHandsHolding,\n faHandsClapping: faHandsClapping,\n faRepublican: faRepublican,\n faArrowLeft: faArrowLeft,\n faPersonCircleXmark: faPersonCircleXmark,\n faRuler: faRuler,\n faAlignLeft: faAlignLeft,\n faDiceD6: faDiceD6,\n faRestroom: faRestroom,\n faJ: faJ,\n faUsersViewfinder: faUsersViewfinder,\n faFileVideo: faFileVideo,\n faUpRightFromSquare: faUpRightFromSquare,\n faExternalLinkAlt: faExternalLinkAlt,\n faTableCells: faTableCells,\n faTh: faTh,\n faFilePdf: faFilePdf,\n faBookBible: faBookBible,\n faBible: faBible,\n faO: faO,\n faSuitcaseMedical: faSuitcaseMedical,\n faMedkit: faMedkit,\n faUserSecret: faUserSecret,\n faOtter: faOtter,\n faPersonDress: faPersonDress,\n faFemale: faFemale,\n faCommentDollar: faCommentDollar,\n faBusinessTime: faBusinessTime,\n faBriefcaseClock: faBriefcaseClock,\n faTableCellsLarge: faTableCellsLarge,\n faThLarge: faThLarge,\n faBookTanakh: faBookTanakh,\n faTanakh: faTanakh,\n faPhoneVolume: faPhoneVolume,\n faVolumeControlPhone: faVolumeControlPhone,\n faHatCowboySide: faHatCowboySide,\n faClipboardUser: faClipboardUser,\n faChild: faChild,\n faLiraSign: faLiraSign,\n faSatellite: faSatellite,\n faPlaneLock: faPlaneLock,\n faTag: faTag,\n faComment: faComment,\n faCakeCandles: faCakeCandles,\n faBirthdayCake: faBirthdayCake,\n faCake: faCake,\n faEnvelope: faEnvelope,\n faAnglesUp: faAnglesUp,\n faAngleDoubleUp: faAngleDoubleUp,\n faPaperclip: faPaperclip,\n faArrowRightToCity: faArrowRightToCity,\n faRibbon: faRibbon,\n faLungs: faLungs,\n faArrowUp91: faArrowUp91,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faLitecoinSign: faLitecoinSign,\n faBorderNone: faBorderNone,\n faCircleNodes: faCircleNodes,\n faParachuteBox: faParachuteBox,\n faIndent: faIndent,\n faTruckFieldUn: faTruckFieldUn,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faMountain: faMountain,\n faUserDoctor: faUserDoctor,\n faUserMd: faUserMd,\n faCircleInfo: faCircleInfo,\n faInfoCircle: faInfoCircle,\n faCloudMeatball: faCloudMeatball,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faSquareVirus: faSquareVirus,\n faMeteor: faMeteor,\n faCarOn: faCarOn,\n faSleigh: faSleigh,\n faArrowDown19: faArrowDown19,\n faSortNumericAsc: faSortNumericAsc,\n faSortNumericDown: faSortNumericDown,\n faHandHoldingDroplet: faHandHoldingDroplet,\n faHandHoldingWater: faHandHoldingWater,\n faWater: faWater,\n faCalendarCheck: faCalendarCheck,\n faBraille: faBraille,\n faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faLandmark: faLandmark,\n faTruck: faTruck,\n faCrosshairs: faCrosshairs,\n faPersonCane: faPersonCane,\n faTent: faTent,\n faVestPatches: faVestPatches,\n faCheckDouble: faCheckDouble,\n faArrowDownAZ: faArrowDownAZ,\n faSortAlphaAsc: faSortAlphaAsc,\n faSortAlphaDown: faSortAlphaDown,\n faMoneyBillWheat: faMoneyBillWheat,\n faCookie: faCookie,\n faArrowRotateLeft: faArrowRotateLeft,\n faArrowLeftRotate: faArrowLeftRotate,\n faArrowRotateBack: faArrowRotateBack,\n faArrowRotateBackward: faArrowRotateBackward,\n faUndo: faUndo,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faDumbbell: faDumbbell,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faTarpDroplet: faTarpDroplet,\n faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n faPersonSkiingNordic: faPersonSkiingNordic,\n faSkiingNordic: faSkiingNordic,\n faCalendarPlus: faCalendarPlus,\n faPlaneArrival: faPlaneArrival,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faTrainSubway: faTrainSubway,\n faSubway: faSubway,\n faChartGantt: faChartGantt,\n faIndianRupeeSign: faIndianRupeeSign,\n faIndianRupee: faIndianRupee,\n faInr: faInr,\n faCropSimple: faCropSimple,\n faCropAlt: faCropAlt,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faLeftLong: faLeftLong,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faDna: faDna,\n faVirusSlash: faVirusSlash,\n faMinus: faMinus,\n faSubtract: faSubtract,\n faChess: faChess,\n faArrowLeftLong: faArrowLeftLong,\n faLongArrowLeft: faLongArrowLeft,\n faPlugCircleCheck: faPlugCircleCheck,\n faStreetView: faStreetView,\n faFrancSign: faFrancSign,\n faVolumeOff: faVolumeOff,\n faHandsAslInterpreting: faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAslInterpreting: faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n faGear: faGear,\n faCog: faCog,\n faDropletSlash: faDropletSlash,\n faTintSlash: faTintSlash,\n faMosque: faMosque,\n faMosquito: faMosquito,\n faStarOfDavid: faStarOfDavid,\n faPersonMilitaryRifle: faPersonMilitaryRifle,\n faCartShopping: faCartShopping,\n faShoppingCart: faShoppingCart,\n faVials: faVials,\n faPlugCirclePlus: faPlugCirclePlus,\n faPlaceOfWorship: faPlaceOfWorship,\n faGripVertical: faGripVertical,\n faArrowTurnUp: faArrowTurnUp,\n faLevelUp: faLevelUp,\n faU: faU,\n faSquareRootVariable: faSquareRootVariable,\n faSquareRootAlt: faSquareRootAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faBackwardStep: faBackwardStep,\n faStepBackward: faStepBackward,\n faPallet: faPallet,\n faFaucet: faFaucet,\n faBaseballBatBall: faBaseballBatBall,\n faS: faS,\n faTimeline: faTimeline,\n faKeyboard: faKeyboard,\n faCaretDown: faCaretDown,\n faHouseChimneyMedical: faHouseChimneyMedical,\n faClinicMedical: faClinicMedical,\n faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n faTemperature3: faTemperature3,\n faThermometer3: faThermometer3,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faMobileScreen: faMobileScreen,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faPlaneUp: faPlaneUp,\n faPiggyBank: faPiggyBank,\n faBatteryHalf: faBatteryHalf,\n faBattery3: faBattery3,\n faMountainCity: faMountainCity,\n faCoins: faCoins,\n faKhanda: faKhanda,\n faSliders: faSliders,\n faSlidersH: faSlidersH,\n faFolderTree: faFolderTree,\n faNetworkWired: faNetworkWired,\n faMapPin: faMapPin,\n faHamsa: faHamsa,\n faCentSign: faCentSign,\n faFlask: faFlask,\n faPersonPregnant: faPersonPregnant,\n faWandSparkles: faWandSparkles,\n faEllipsisVertical: faEllipsisVertical,\n faEllipsisV: faEllipsisV,\n faTicket: faTicket,\n faPowerOff: faPowerOff,\n faRightLong: faRightLong,\n faLongArrowAltRight: faLongArrowAltRight,\n faFlagUsa: faFlagUsa,\n faLaptopFile: faLaptopFile,\n faTty: faTty,\n faTeletype: faTeletype,\n faDiagramNext: faDiagramNext,\n faPersonRifle: faPersonRifle,\n faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n faClosedCaptioning: faClosedCaptioning,\n faPersonHiking: faPersonHiking,\n faHiking: faHiking,\n faVenusDouble: faVenusDouble,\n faImages: faImages,\n faCalculator: faCalculator,\n faPeoplePulling: faPeoplePulling,\n faN: faN,\n faCableCar: faCableCar,\n faTram: faTram,\n faCloudRain: faCloudRain,\n faBuildingCircleXmark: faBuildingCircleXmark,\n faShip: faShip,\n faArrowsDownToLine: faArrowsDownToLine,\n faDownload: faDownload,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faDeleteLeft: faDeleteLeft,\n faBackspace: faBackspace,\n faEyeDropper: faEyeDropper,\n faEyeDropperEmpty: faEyeDropperEmpty,\n faEyedropper: faEyedropper,\n faFileCircleCheck: faFileCircleCheck,\n faForward: faForward,\n faMobile: faMobile,\n faMobileAndroid: faMobileAndroid,\n faMobilePhone: faMobilePhone,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faAlignCenter: faAlignCenter,\n faBookSkull: faBookSkull,\n faBookDead: faBookDead,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faOutdent: faOutdent,\n faDedent: faDedent,\n faHeartCircleExclamation: faHeartCircleExclamation,\n faHouse: faHouse,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeLgAlt: faHomeLgAlt,\n faCalendarWeek: faCalendarWeek,\n faLaptopMedical: faLaptopMedical,\n faB: faB,\n faFileMedical: faFileMedical,\n faDiceOne: faDiceOne,\n faKiwiBird: faKiwiBird,\n faArrowRightArrowLeft: faArrowRightArrowLeft,\n faExchange: faExchange,\n faRotateRight: faRotateRight,\n faRedoAlt: faRedoAlt,\n faRotateForward: faRotateForward,\n faUtensils: faUtensils,\n faCutlery: faCutlery,\n faArrowUpWideShort: faArrowUpWideShort,\n faSortAmountUp: faSortAmountUp,\n faMillSign: faMillSign,\n faBowlRice: faBowlRice,\n faSkull: faSkull,\n faTowerBroadcast: faTowerBroadcast,\n faBroadcastTower: faBroadcastTower,\n faTruckPickup: faTruckPickup,\n faUpLong: faUpLong,\n faLongArrowAltUp: faLongArrowAltUp,\n faStop: faStop,\n faCodeMerge: faCodeMerge,\n faUpload: faUpload,\n faHurricane: faHurricane,\n faMound: faMound,\n faToiletPortable: faToiletPortable,\n faCompactDisc: faCompactDisc,\n faFileArrowDown: faFileArrowDown,\n faFileDownload: faFileDownload,\n faCaravan: faCaravan,\n faShieldCat: faShieldCat,\n faBolt: faBolt,\n faZap: faZap,\n faGlassWater: faGlassWater,\n faOilWell: faOilWell,\n faVault: faVault,\n faMars: faMars,\n faToilet: faToilet,\n faPlaneCircleXmark: faPlaneCircleXmark,\n faYenSign: faYenSign,\n faCny: faCny,\n faJpy: faJpy,\n faRmb: faRmb,\n faYen: faYen,\n faRubleSign: faRubleSign,\n faRouble: faRouble,\n faRub: faRub,\n faRuble: faRuble,\n faSun: faSun,\n faGuitar: faGuitar,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faHorseHead: faHorseHead,\n faBoreHole: faBoreHole,\n faIndustry: faIndustry,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowsTurnToDots: faArrowsTurnToDots,\n faFlorinSign: faFlorinSign,\n faArrowDownShortWide: faArrowDownShortWide,\n faSortAmountDesc: faSortAmountDesc,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faLessThan: faLessThan,\n faAngleDown: faAngleDown,\n faCarTunnel: faCarTunnel,\n faHeadSideCough: faHeadSideCough,\n faGripLines: faGripLines,\n faThumbsDown: faThumbsDown,\n faUserLock: faUserLock,\n faArrowRightLong: faArrowRightLong,\n faLongArrowRight: faLongArrowRight,\n faAnchorCircleXmark: faAnchorCircleXmark,\n faEllipsis: faEllipsis,\n faEllipsisH: faEllipsisH,\n faChessPawn: faChessPawn,\n faKitMedical: faKitMedical,\n faFirstAid: faFirstAid,\n faPersonThroughWindow: faPersonThroughWindow,\n faToolbox: faToolbox,\n faHandsHoldingCircle: faHandsHoldingCircle,\n faBug: faBug,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faCar: faCar,\n faAutomobile: faAutomobile,\n faHandHoldingHand: faHandHoldingHand,\n faBookOpenReader: faBookOpenReader,\n faBookReader: faBookReader,\n faMountainSun: faMountainSun,\n faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n faDiceD20: faDiceD20,\n faTruckDroplet: faTruckDroplet,\n faFileCircleXmark: faFileCircleXmark,\n faTemperatureArrowUp: faTemperatureArrowUp,\n faTemperatureUp: faTemperatureUp,\n faMedal: faMedal,\n faBed: faBed,\n faSquareH: faSquareH,\n faHSquare: faHSquare,\n faPodcast: faPodcast,\n faTemperatureFull: faTemperatureFull,\n faTemperature4: faTemperature4,\n faThermometer4: faThermometer4,\n faThermometerFull: faThermometerFull,\n faBell: faBell,\n faSuperscript: faSuperscript,\n faPlugCircleXmark: faPlugCircleXmark,\n faStarOfLife: faStarOfLife,\n faPhoneSlash: faPhoneSlash,\n faPaintRoller: faPaintRoller,\n faHandshakeAngle: faHandshakeAngle,\n faHandsHelping: faHandsHelping,\n faLocationDot: faLocationDot,\n faMapMarkerAlt: faMapMarkerAlt,\n faFile: faFile,\n faGreaterThan: faGreaterThan,\n faPersonSwimming: faPersonSwimming,\n faSwimmer: faSwimmer,\n faArrowDown: faArrowDown,\n faDroplet: faDroplet,\n faTint: faTint,\n faEraser: faEraser,\n faEarthAmericas: faEarthAmericas,\n faEarth: faEarth,\n faEarthAmerica: faEarthAmerica,\n faGlobeAmericas: faGlobeAmericas,\n faPersonBurst: faPersonBurst,\n faDove: faDove,\n faBatteryEmpty: faBatteryEmpty,\n faBattery0: faBattery0,\n faSocks: faSocks,\n faInbox: faInbox,\n faSection: faSection,\n faGaugeHigh: faGaugeHigh,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltFast: faTachometerAltFast,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faWineBottle: faWineBottle,\n faChessRook: faChessRook,\n faBarsStaggered: faBarsStaggered,\n faReorder: faReorder,\n faStream: faStream,\n faDharmachakra: faDharmachakra,\n faHotdog: faHotdog,\n faPersonWalkingWithCane: faPersonWalkingWithCane,\n faBlind: faBlind,\n faDrum: faDrum,\n faIceCream: faIceCream,\n faHeartCircleBolt: faHeartCircleBolt,\n faFax: faFax,\n faParagraph: faParagraph,\n faCheckToSlot: faCheckToSlot,\n faVoteYea: faVoteYea,\n faStarHalf: faStarHalf,\n faBoxesStacked: faBoxesStacked,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faLink: faLink,\n faChain: faChain,\n faEarListen: faEarListen,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faTreeCity: faTreeCity,\n faPlay: faPlay,\n faFont: faFont,\n faRupiahSign: faRupiahSign,\n faMagnifyingGlass: faMagnifyingGlass,\n faSearch: faSearch,\n faTableTennisPaddleBall: faTableTennisPaddleBall,\n faPingPongPaddleBall: faPingPongPaddleBall,\n faTableTennis: faTableTennis,\n faPersonDotsFromLine: faPersonDotsFromLine,\n faDiagnoses: faDiagnoses,\n faTrashCanArrowUp: faTrashCanArrowUp,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faNairaSign: faNairaSign,\n faCartArrowDown: faCartArrowDown,\n faWalkieTalkie: faWalkieTalkie,\n faFilePen: faFilePen,\n faFileEdit: faFileEdit,\n faReceipt: faReceipt,\n faSquarePen: faSquarePen,\n faPenSquare: faPenSquare,\n faPencilSquare: faPencilSquare,\n faSuitcaseRolling: faSuitcaseRolling,\n faPersonCircleExclamation: faPersonCircleExclamation,\n faChevronDown: faChevronDown,\n faBatteryFull: faBatteryFull,\n faBattery: faBattery,\n faBattery5: faBattery5,\n faSkullCrossbones: faSkullCrossbones,\n faCodeCompare: faCodeCompare,\n faListUl: faListUl,\n faListDots: faListDots,\n faSchoolLock: faSchoolLock,\n faTowerCell: faTowerCell,\n faDownLong: faDownLong,\n faLongArrowAltDown: faLongArrowAltDown,\n faRankingStar: faRankingStar,\n faChessKing: faChessKing,\n faPersonHarassing: faPersonHarassing,\n faBrazilianRealSign: faBrazilianRealSign,\n faLandmarkDome: faLandmarkDome,\n faLandmarkAlt: faLandmarkAlt,\n faArrowUp: faArrowUp,\n faTv: faTv,\n faTelevision: faTelevision,\n faTvAlt: faTvAlt,\n faShrimp: faShrimp,\n faListCheck: faListCheck,\n faTasks: faTasks,\n faJugDetergent: faJugDetergent,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faUserShield: faUserShield,\n faWind: faWind,\n faCarBurst: faCarBurst,\n faCarCrash: faCarCrash,\n faY: faY,\n faPersonSnowboarding: faPersonSnowboarding,\n faSnowboarding: faSnowboarding,\n faTruckFast: faTruckFast,\n faShippingFast: faShippingFast,\n faFish: faFish,\n faUserGraduate: faUserGraduate,\n faCircleHalfStroke: faCircleHalfStroke,\n faAdjust: faAdjust,\n faClapperboard: faClapperboard,\n faCircleRadiation: faCircleRadiation,\n faRadiationAlt: faRadiationAlt,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faJetFighterUp: faJetFighterUp,\n faDiagramProject: faDiagramProject,\n faProjectDiagram: faProjectDiagram,\n faCopy: faCopy,\n faVolumeXmark: faVolumeXmark,\n faVolumeMute: faVolumeMute,\n faVolumeTimes: faVolumeTimes,\n faHandSparkles: faHandSparkles,\n faGrip: faGrip,\n faGripHorizontal: faGripHorizontal,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faChildCombatant: faChildCombatant,\n faChildRifle: faChildRifle,\n faGun: faGun,\n faSquarePhone: faSquarePhone,\n faPhoneSquare: faPhoneSquare,\n faPlus: faPlus,\n faAdd: faAdd,\n faExpand: faExpand,\n faComputer: faComputer,\n faXmark: faXmark,\n faClose: faClose,\n faMultiply: faMultiply,\n faRemove: faRemove,\n faTimes: faTimes,\n faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n faArrows: faArrows,\n faChalkboardUser: faChalkboardUser,\n faChalkboardTeacher: faChalkboardTeacher,\n faPesoSign: faPesoSign,\n faBuildingShield: faBuildingShield,\n faBaby: faBaby,\n faUsersLine: faUsersLine,\n faQuoteLeft: faQuoteLeft,\n faQuoteLeftAlt: faQuoteLeftAlt,\n faTractor: faTractor,\n faTrashArrowUp: faTrashArrowUp,\n faTrashRestore: faTrashRestore,\n faArrowDownUpLock: faArrowDownUpLock,\n faLinesLeaning: faLinesLeaning,\n faRulerCombined: faRulerCombined,\n faCopyright: faCopyright,\n faEquals: faEquals,\n faBlender: faBlender,\n faTeeth: faTeeth,\n faShekelSign: faShekelSign,\n faIls: faIls,\n faShekel: faShekel,\n faSheqel: faSheqel,\n faSheqelSign: faSheqelSign,\n faMap: faMap,\n faRocket: faRocket,\n faPhotoFilm: faPhotoFilm,\n faPhotoVideo: faPhotoVideo,\n faFolderMinus: faFolderMinus,\n faStore: faStore,\n faArrowTrendUp: faArrowTrendUp,\n faPlugCircleMinus: faPlugCircleMinus,\n faSignHanging: faSignHanging,\n faSign: faSign,\n faBezierCurve: faBezierCurve,\n faBellSlash: faBellSlash,\n faTablet: faTablet,\n faTabletAndroid: faTabletAndroid,\n faSchoolFlag: faSchoolFlag,\n faFill: faFill,\n faAngleUp: faAngleUp,\n faDrumstickBite: faDrumstickBite,\n faHollyBerry: faHollyBerry,\n faChevronLeft: faChevronLeft,\n faBacteria: faBacteria,\n faHandLizard: faHandLizard,\n faNotdef: faNotdef,\n faDisease: faDisease,\n faBriefcaseMedical: faBriefcaseMedical,\n faGenderless: faGenderless,\n faChevronRight: faChevronRight,\n faRetweet: faRetweet,\n faCarRear: faCarRear,\n faCarAlt: faCarAlt,\n faPumpSoap: faPumpSoap,\n faVideoSlash: faVideoSlash,\n faBatteryQuarter: faBatteryQuarter,\n faBattery2: faBattery2,\n faRadio: faRadio,\n faBabyCarriage: faBabyCarriage,\n faCarriageBaby: faCarriageBaby,\n faTrafficLight: faTrafficLight,\n faThermometer: faThermometer,\n faVrCardboard: faVrCardboard,\n faHandMiddleFinger: faHandMiddleFinger,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faTruckMoving: faTruckMoving,\n faGlassWaterDroplet: faGlassWaterDroplet,\n faDisplay: faDisplay,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faThumbtack: faThumbtack,\n faThumbTack: faThumbTack,\n faTrophy: faTrophy,\n faPersonPraying: faPersonPraying,\n faPray: faPray,\n faHammer: faHammer,\n faHandPeace: faHandPeace,\n faRotate: faRotate,\n faSyncAlt: faSyncAlt,\n faSpinner: faSpinner,\n faRobot: faRobot,\n faPeace: faPeace,\n faGears: faGears,\n faCogs: faCogs,\n faWarehouse: faWarehouse,\n faArrowUpRightDots: faArrowUpRightDots,\n faSplotch: faSplotch,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faDiceFour: faDiceFour,\n faSimCard: faSimCard,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faMercury: faMercury,\n faArrowTurnDown: faArrowTurnDown,\n faLevelDown: faLevelDown,\n faPersonFallingBurst: faPersonFallingBurst,\n faAward: faAward,\n faTicketSimple: faTicketSimple,\n faTicketAlt: faTicketAlt,\n faBuilding: faBuilding,\n faAnglesLeft: faAnglesLeft,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faQrcode: faQrcode,\n faClockRotateLeft: faClockRotateLeft,\n faHistory: faHistory,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faFileExport: faFileExport,\n faArrowRightFromFile: faArrowRightFromFile,\n faShield: faShield,\n faShieldBlank: faShieldBlank,\n faArrowUpShortWide: faArrowUpShortWide,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faHouseMedical: faHouseMedical,\n faGolfBallTee: faGolfBallTee,\n faGolfBall: faGolfBall,\n faCircleChevronLeft: faCircleChevronLeft,\n faChevronCircleLeft: faChevronCircleLeft,\n faHouseChimneyWindow: faHouseChimneyWindow,\n faPenNib: faPenNib,\n faTentArrowTurnLeft: faTentArrowTurnLeft,\n faTents: faTents,\n faWandMagic: faWandMagic,\n faMagic: faMagic,\n faDog: faDog,\n faCarrot: faCarrot,\n faMoon: faMoon,\n faWineGlassEmpty: faWineGlassEmpty,\n faWineGlassAlt: faWineGlassAlt,\n faCheese: faCheese,\n faYinYang: faYinYang,\n faMusic: faMusic,\n faCodeCommit: faCodeCommit,\n faTemperatureLow: faTemperatureLow,\n faPersonBiking: faPersonBiking,\n faBiking: faBiking,\n faBroom: faBroom,\n faShieldHeart: faShieldHeart,\n faGopuram: faGopuram,\n faEarthOceania: faEarthOceania,\n faGlobeOceania: faGlobeOceania,\n faSquareXmark: faSquareXmark,\n faTimesSquare: faTimesSquare,\n faXmarkSquare: faXmarkSquare,\n faHashtag: faHashtag,\n faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n faExpandAlt: faExpandAlt,\n faOilCan: faOilCan,\n faT: faT,\n faHippo: faHippo,\n faChartColumn: faChartColumn,\n faInfinity: faInfinity,\n faVialCircleCheck: faVialCircleCheck,\n faPersonArrowDownToLine: faPersonArrowDownToLine,\n faVoicemail: faVoicemail,\n faFan: faFan,\n faPersonWalkingLuggage: faPersonWalkingLuggage,\n faUpDown: faUpDown,\n faArrowsAltV: faArrowsAltV,\n faCloudMoonRain: faCloudMoonRain,\n faCalendar: faCalendar,\n faTrailer: faTrailer,\n faBahai: faBahai,\n faHaykal: faHaykal,\n faSdCard: faSdCard,\n faDragon: faDragon,\n faShoePrints: faShoePrints,\n faCirclePlus: faCirclePlus,\n faPlusCircle: faPlusCircle,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faHandHolding: faHandHolding,\n faPlugCircleExclamation: faPlugCircleExclamation,\n faLinkSlash: faLinkSlash,\n faChainBroken: faChainBroken,\n faChainSlash: faChainSlash,\n faUnlink: faUnlink,\n faClone: faClone,\n faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n faArrowUpZA: faArrowUpZA,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faFireFlameCurved: faFireFlameCurved,\n faFireAlt: faFireAlt,\n faTornado: faTornado,\n faFileCirclePlus: faFileCirclePlus,\n faBookQuran: faBookQuran,\n faQuran: faQuran,\n faAnchor: faAnchor,\n faBorderAll: faBorderAll,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faCookieBite: faCookieBite,\n faArrowTrendDown: faArrowTrendDown,\n faRss: faRss,\n faFeed: faFeed,\n faDrawPolygon: faDrawPolygon,\n faScaleBalanced: faScaleBalanced,\n faBalanceScale: faBalanceScale,\n faGaugeSimpleHigh: faGaugeSimpleHigh,\n faTachometer: faTachometer,\n faTachometerFast: faTachometerFast,\n faShower: faShower,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faM: faM,\n faTableList: faTableList,\n faThList: faThList,\n faCommentSms: faCommentSms,\n faSms: faSms,\n faBook: faBook,\n faUserPlus: faUserPlus,\n faCheck: faCheck,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBattery4: faBattery4,\n faHouseCircleCheck: faHouseCircleCheck,\n faAngleLeft: faAngleLeft,\n faDiagramSuccessor: faDiagramSuccessor,\n faTruckArrowRight: faTruckArrowRight,\n faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n faHandFist: faHandFist,\n faFistRaised: faFistRaised,\n faCloudMoon: faCloudMoon,\n faBriefcase: faBriefcase,\n faPersonFalling: faPersonFalling,\n faImagePortrait: faImagePortrait,\n faPortrait: faPortrait,\n faUserTag: faUserTag,\n faRug: faRug,\n faEarthEurope: faEarthEurope,\n faGlobeEurope: faGlobeEurope,\n faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n faLuggageCart: faLuggageCart,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faBahtSign: faBahtSign,\n faBookOpen: faBookOpen,\n faBookJournalWhills: faBookJournalWhills,\n faJournalWhills: faJournalWhills,\n faHandcuffs: faHandcuffs,\n faTriangleExclamation: faTriangleExclamation,\n faExclamationTriangle: faExclamationTriangle,\n faWarning: faWarning,\n faDatabase: faDatabase,\n faShare: faShare,\n faArrowTurnRight: faArrowTurnRight,\n faMailForward: faMailForward,\n faBottleDroplet: faBottleDroplet,\n faMaskFace: faMaskFace,\n faHillRockslide: faHillRockslide,\n faRightLeft: faRightLeft,\n faExchangeAlt: faExchangeAlt,\n faPaperPlane: faPaperPlane,\n faRoadCircleExclamation: faRoadCircleExclamation,\n faDungeon: faDungeon,\n faAlignRight: faAlignRight,\n faMoneyBill1Wave: faMoneyBill1Wave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faLifeRing: faLifeRing,\n faHands: faHands,\n faSignLanguage: faSignLanguage,\n faSigning: faSigning,\n faCalendarDay: faCalendarDay,\n faWaterLadder: faWaterLadder,\n faLadderWater: faLadderWater,\n faSwimmingPool: faSwimmingPool,\n faArrowsUpDown: faArrowsUpDown,\n faArrowsV: faArrowsV,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faWheelchairMove: faWheelchairMove,\n faWheelchairAlt: faWheelchairAlt,\n faTurnDown: faTurnDown,\n faLevelDownAlt: faLevelDownAlt,\n faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n faSquareEnvelope: faSquareEnvelope,\n faEnvelopeSquare: faEnvelopeSquare,\n faDice: faDice,\n faBowlingBall: faBowlingBall,\n faBrain: faBrain,\n faBandage: faBandage,\n faBandAid: faBandAid,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faGifts: faGifts,\n faHotel: faHotel,\n faEarthAsia: faEarthAsia,\n faGlobeAsia: faGlobeAsia,\n faIdCardClip: faIdCardClip,\n faIdCardAlt: faIdCardAlt,\n faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n faSearchPlus: faSearchPlus,\n faThumbsUp: faThumbsUp,\n faUserClock: faUserClock,\n faHandDots: faHandDots,\n faAllergies: faAllergies,\n faFileInvoice: faFileInvoice,\n faWindowMinimize: faWindowMinimize,\n faMugSaucer: faMugSaucer,\n faCoffee: faCoffee,\n faBrush: faBrush,\n faMask: faMask,\n faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n faSearchMinus: faSearchMinus,\n faRulerVertical: faRulerVertical,\n faUserLarge: faUserLarge,\n faUserAlt: faUserAlt,\n faTrainTram: faTrainTram,\n faUserNurse: faUserNurse,\n faSyringe: faSyringe,\n faCloudSun: faCloudSun,\n faStopwatch20: faStopwatch20,\n faSquareFull: faSquareFull,\n faMagnet: faMagnet,\n faJar: faJar,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faBugSlash: faBugSlash,\n faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n faBone: faBone,\n faUserInjured: faUserInjured,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faPlane: faPlane,\n faTentArrowsDown: faTentArrowsDown,\n faExclamation: faExclamation,\n faArrowsSpin: faArrowsSpin,\n faPrint: faPrint,\n faTurkishLiraSign: faTurkishLiraSign,\n faTry: faTry,\n faTurkishLira: faTurkishLira,\n faDollarSign: faDollarSign,\n faDollar: faDollar,\n faUsd: faUsd,\n faX: faX,\n faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n faSearchDollar: faSearchDollar,\n faUsersGear: faUsersGear,\n faUsersCog: faUsersCog,\n faPersonMilitaryPointing: faPersonMilitaryPointing,\n faBuildingColumns: faBuildingColumns,\n faBank: faBank,\n faInstitution: faInstitution,\n faMuseum: faMuseum,\n faUniversity: faUniversity,\n faUmbrella: faUmbrella,\n faTrowel: faTrowel,\n faD: faD,\n faStapler: faStapler,\n faMasksTheater: faMasksTheater,\n faTheaterMasks: faTheaterMasks,\n faKipSign: faKipSign,\n faHandPointLeft: faHandPointLeft,\n faHandshakeSimple: faHandshakeSimple,\n faHandshakeAlt: faHandshakeAlt,\n faJetFighter: faJetFighter,\n faFighterJet: faFighterJet,\n faSquareShareNodes: faSquareShareNodes,\n faShareAltSquare: faShareAltSquare,\n faBarcode: faBarcode,\n faPlusMinus: faPlusMinus,\n faVideo: faVideo,\n faVideoCamera: faVideoCamera,\n faGraduationCap: faGraduationCap,\n faMortarBoard: faMortarBoard,\n faHandHoldingMedical: faHandHoldingMedical,\n faPersonCircleCheck: faPersonCircleCheck,\n faTurnUp: faTurnUp,\n faLevelUpAlt: faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faArrowTurnRight, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","import React, { useEffect } from \"react\";\n\nconst HubspotContactForm = props => {\n const { region, portalId, formId, sfdcCampaignId } = props;\n useEffect(() => {\n const script = document.createElement('script');\n script.src = 'https://js.hsforms.net/forms/shell.js';\n document.body.appendChild(script);\n\n script.addEventListener('load', () => {\n // @TS-ignore\n if (window.hbspt) {\n // @TS-ignore\n window.hbspt.forms.create({\n region: region,\n portalId: portalId,\n formId: formId,\n sfdcCampaignId: sfdcCampaignId,\n target: '#hubspotForm'\n })\n }\n });\n\n }, []);\n\n return (\n
    \n
    \n
    \n );\n};\n\nexport default HubspotContactForm;","import { useState, useContext, useEffect } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faXmark, faPhone, faEnvelope } from '@fortawesome/free-solid-svg-icons';\nimport ResultsContext from '../../context/ResultsContext';\nimport SubmissionFormContext from '../../context/SubmissionFormContext';\nimport HubspotContactForm from './HubspotContactForm';\nimport './GetQuote.scss'\n\nexport default function GetQuote({ setShowContactForm }) {\n const REACT_APP_PROD_URL = process.env.REACT_APP_PROD_URL;\n const DEVELOPMENT_API = process.env.REACT_APP_DEVELOPMENT_API;\n const REACT_APP_PROD_API = process.env.REACT_APP_PROD_API;\n const [API, setAPI] = useState(DEVELOPMENT_API);\n\n const { formContent } = useContext(SubmissionFormContext);\n const { resultsContent } = useContext(ResultsContext);\n\n\n useEffect(() => {\n if (window.location.host === REACT_APP_PROD_URL) {\n setAPI(REACT_APP_PROD_API)\n }\n }, [REACT_APP_PROD_URL, REACT_APP_PROD_API]);\n\n\n useEffect(() => {\n setTimeout(() => {\n document.querySelector(\"input[name='aesi_terastor_sizing__estimate']\").focus();\n document.querySelector(\"input[name='power_capacity']\").value = formContent.rated_system_power_mw;\n document.querySelector(\"input[name='power_capacity']\").focus();\n document.querySelector(\"input[name='energy_capacity']\").value = formContent.desired_discharge_energy_mwh;\n document.querySelector(\"input[name='energy_capacity']\").focus();\n document.querySelector(\"input[name='required_discharge_time']\").value = formContent.discharge_duration;\n document.querySelector(\"input[name='required_discharge_time']\").focus()\n document.querySelector(\"input[name='power_factor__poi']\").value = formContent.power_factor_support_at_poi;\n document.querySelector(\"input[name='power_factor__poi']\").focus();\n document.querySelector(\"input[name='expected_cycles_year']\").value = formContent.cycles_per_year;\n document.querySelector(\"input[name='expected_cycles_year']\").focus();\n document.querySelector(\"input[name='project_lifetime__years_']\").value = formContent.service_life;\n document.querySelector(\"input[name='project_lifetime__years_']\").focus();\n document.querySelector(\"input[name='poi_voltage__kv_']\").value = formContent.poi_voltage;\n document.querySelector(\"input[name='poi_voltage__kv_']\").focus();\n\n document.querySelector(\"input[name='orientation_information']\").value = window.rotation;\n document.querySelector(\"input[name='orientation_information']\").focus();\n document.querySelector(\"input[name='center_coordinates_lat']\").value = window.centerCoordinates?.split(\",\")[0];\n document.querySelector(\"input[name='center_coordinates_lat']\").focus();\n document.querySelector(\"input[name='center_coordinates_long']\").value = window.centerCoordinates?.split(\",\")[1];\n document.querySelector(\"input[name='center_coordinates_long']\").focus();\n document.querySelector(\"input[name='north_east_coordinates_lat']\").value = window.northEastCoordinates?.split(\",\")[0];\n document.querySelector(\"input[name='north_east_coordinates_lat']\").focus();\n document.querySelector(\"input[name='north_east_coordinates_long']\").value = window.northEastCoordinates?.split(\",\")[1];\n document.querySelector(\"input[name='north_east_coordinates_long']\").focus();\n document.querySelector(\"input[name='south_west_coordinates_lat']\").value = window.southWestCoordinates?.split(\",\")[0];\n document.querySelector(\"input[name='south_west_coordinates_lat']\").focus();\n document.querySelector(\"input[name='south_west_coordinates_long']\").value = window.southWestCoordinates?.split(\",\")[1];\n document.querySelector(\"input[name='south_west_coordinates_long']\").focus();\n document.querySelector(\"input[name='vizualization_width']\").value = window.width;\n document.querySelector(\"input[name='vizualization_width']\").focus();\n document.querySelector(\"input[name='vizualization_height']\").value = window.height;\n document.querySelector(\"input[name='vizualization_height']\").focus();\n document.querySelector(\"input[name='configurator_location_file']\").value = window.kmlFile;\n document.querySelector(\"input[name='configurator_location_file']\").focus();\n\n // select the EOL/BOL flag\n if (formContent.bol_eol_flag == \"EOL\") {\n document.querySelector(\"select[name='energy_capacity_maintenance_required_']\").value = \"Yes - EOL\";\n document.querySelector(\"select[name='energy_capacity_maintenance_required_']\").dispatchEvent(new Event('change', { 'view': window, 'bubbles': true }));\n\n // wait for Augmentation fields to appear\n setTimeout(() => {\n if (formContent.augmentation == true) {\n document.querySelectorAll(\"input[name='augmentation_required_']\")[0].checked = true;\n } else if (formContent.augmentation == false) {\n document.querySelectorAll(\"input[name='augmentation_required_']\")[1].checked = true;\n }\n document.querySelector(\"input[name='time_before_first_augmentation']\").value = formContent.initial_augmentation_period;\n document.querySelector(\"input[name='time_before_first_augmentation']\").focus();\n document.querySelector(\"input[name='augmentation_period_thereafter']\").value = formContent.augmentation_period;\n document.querySelector(\"input[name='augmentation_period_thereafter']\").focus();\n }, 500)\n } else if (formContent.bol_eol_flag == \"BOL\") {\n document.querySelector(\"select[name='energy_capacity_maintenance_required_']\").value = \"No\";\n document.querySelector(\"select[name='energy_capacity_maintenance_required_']\").focus();\n }\n\n if (window.coordinates) {\n document.querySelector(\"select[name='location_submission']\").value = \"Coordinates\";\n document.querySelector(\"select[name='location_submission']\").focus();\n document.querySelector(\"select[name='location_submission']\").dispatchEvent(new Event('change', { 'view': window, 'bubbles': true }));\n\n setTimeout(() => {\n document.querySelector(\"input[name='coordinates']\").value = window.coordinates;\n document.querySelector(\"input[name='coordinates']\").focus();\n }, 500)\n }\n\n // energy capacity maint req\n // augmentation\n\n document.querySelector(\"input[name='requested_response_date']\").autocomplete = \"off\";\n document.querySelector(\"input[name='project_name']\").autocomplete = \"new-password\";\n document.querySelector(\"select[name='project_type']\").autocomplete = \"off\";\n document.querySelector(\"input[name='project_commercial_operation_date__cod_']\").autocomplete = \"off\";\n document.querySelector(\"select[name='incoterms']\").autocomplete = \"off\";\n document.querySelector(\"select[name='capacity_assurance_time']\").autocomplete = \"off\";\n document.querySelector(\"select[name='pcs']\").autocomplete = \"off\";\n document.querySelector(\"select[name='location_submission']\").autocomplete = \"new-password\";\n document.querySelector(\"input[name='site_footprint']\").autocomplete = \"off\";\n document.querySelector(\"input[name='project_elevation']\").autocomplete = \"off\";\n document.querySelector(\"textarea[name='additional_project_requirements']\").autocomplete = \"off\";\n document.querySelector(\"input[name='power_capacity']\").autocomplete = \"new-password\";\n document.querySelector(\"input[name='energy_capacity']\").autocomplete = \"new-password\";\n document.querySelector(\"input[name='required_discharge_time']\").autocomplete = \"off\";\n document.querySelector(\"input[name='power_factor__poi']\").autocomplete = \"off\";\n document.querySelector(\"input[name='expected_cycles_year']\").autocomplete = \"new-password\";\n document.querySelector(\"input[name='project_lifetime__years_']\").autocomplete = \"new-password\";\n document.querySelector(\"select[name='energy_capacity_maintenance_required_']\").autocomplete = \"new-password\";\n document.querySelector(\"input[name='time_before_first_augmentation']\").autocomplete = \"off\";\n document.querySelector(\"input[name='augmentation_period_thereafter']\").autocomplete = \"off\";\n document.querySelector(\"input[name='poi_voltage__kv_']\").autocomplete = \"new-password\";\n\n\n // focus back on first field\n setTimeout(() => {\n document.querySelector(\"input[name='firstname']\").focus();\n }, 501);\n\n }, 750)\n }, [])\n\n return (\n <>\n
    \n
    \n
    setShowContactForm(false)} className=\"close-icon text-blue\">
    \n <>\n

    Fill Out This Form for a Quote

    \n \n \n
    \n \n )\n}","import { useState } from 'react';\nimport { Outlet, ScrollRestoration } from \"react-router-dom\";\nimport NavBar from \"../components/Navigation/NavBar/NavBar\";\nimport Toast from \"../components/Toast/Toast\";\nimport SubmissionFormContext from '../context/SubmissionFormContext';\nimport ResultsContext from '../context/ResultsContext';\nimport ToastContext from '../context/ToastContext';\nimport OverlayContext from '../context/OverlayContext';\nimport FormContentBasic from '../context/FormContentBasic';\nimport GetQuote from '../components/GetQuote/GetQuote';\n\nexport default function Root() {\n const [formContent, setFormContent] = useState(FormContentBasic);\n const [showContactForm, setShowContactForm] = useState(false);\n const [showOverlay, setOverlayContext] = useState(false);\n\n function setShowOverlay(newContent) {\n setOverlayContext(newContent);\n }\n\n function updateFormContent(newContent) {\n setFormContent(newContent);\n }\n\n const [resultsContent, setResultsContent] = useState({});\n function updateResultsContent(newContent) {\n setResultsContent(newContent);\n }\n\n const [toastContent, setToastContent] = useState({\n showToast: false,\n toastMessage: \"Generic Error\",\n toastStyles: { backgroundColor: \"#ac141a\" }\n })\n function updateToastContent(newToastContent) {\n setToastContent(newToastContent);\n }\n\n return (\n \n \n \n \n \n
    \n \n \n
    \n \n
    \n {/*
    */}\n {showContactForm ?\n \n : null}\n
    \n
    \n
    \n
    \n
    \n );\n}","import './Loader.scss';\n\nexport default function Loader({ isSpinning, status = \"\" }) {\n if (isSpinning) {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    {status}
    \n
    \n )\n }\n else return;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","export const ROUND_ARROW =\n '';\n\nexport const BOX_CLASS = `__NAMESPACE_PREFIX__-box`;\nexport const CONTENT_CLASS = `__NAMESPACE_PREFIX__-content`;\nexport const BACKDROP_CLASS = `__NAMESPACE_PREFIX__-backdrop`;\nexport const ARROW_CLASS = `__NAMESPACE_PREFIX__-arrow`;\nexport const SVG_ARROW_CLASS = `__NAMESPACE_PREFIX__-svg-arrow`;\n\nexport const TOUCH_OPTIONS = {passive: true, capture: true};\n\nexport const TIPPY_DEFAULT_APPEND_TO = () => document.body;\n","import {BasePlacement, Placement} from './types';\n\nexport function hasOwnProperty(\n obj: Record,\n key: string\n): boolean {\n return {}.hasOwnProperty.call(obj, key);\n}\n\nexport function getValueAtIndexOrReturn(\n value: T | [T | null, T | null],\n index: number,\n defaultValue: T | [T, T]\n): T {\n if (Array.isArray(value)) {\n const v = value[index];\n return v == null\n ? Array.isArray(defaultValue)\n ? defaultValue[index]\n : defaultValue\n : v;\n }\n\n return value;\n}\n\nexport function isType(value: any, type: string): boolean {\n const str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(`${type}]`) > -1;\n}\n\nexport function invokeWithArgsOrReturn(value: any, args: any[]): any {\n return typeof value === 'function' ? value(...args) : value;\n}\n\nexport function debounce(\n fn: (arg: T) => void,\n ms: number\n): (arg: T) => void {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n let timeout: any;\n\n return (arg): void => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(arg);\n }, ms);\n };\n}\n\nexport function removeProperties(obj: T, keys: string[]): Partial {\n const clone = {...obj};\n keys.forEach((key) => {\n delete (clone as any)[key];\n });\n return clone;\n}\n\nexport function splitBySpaces(value: string): string[] {\n return value.split(/\\s+/).filter(Boolean);\n}\n\nexport function normalizeToArray(value: T | T[]): T[] {\n return ([] as T[]).concat(value);\n}\n\nexport function pushIfUnique(arr: T[], value: T): void {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\n\nexport function appendPxIfNumber(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function unique(arr: T[]): T[] {\n return arr.filter((item, index) => arr.indexOf(item) === index);\n}\n\nexport function getNumber(value: string | number): number {\n return typeof value === 'number' ? value : parseFloat(value);\n}\n\nexport function getBasePlacement(placement: Placement): BasePlacement {\n return placement.split('-')[0] as BasePlacement;\n}\n\nexport function arrayFrom(value: ArrayLike): any[] {\n return [].slice.call(value);\n}\n\nexport function removeUndefinedProps(\n obj: Record\n): Partial> {\n return Object.keys(obj).reduce((acc, key) => {\n if (obj[key] !== undefined) {\n (acc as any)[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n","import {ReferenceElement, Targets} from './types';\nimport {PopperTreeData} from './types-internal';\nimport {arrayFrom, isType, normalizeToArray, getBasePlacement} from './utils';\n\nexport function div(): HTMLDivElement {\n return document.createElement('div');\n}\n\nexport function isElement(value: unknown): value is Element | DocumentFragment {\n return ['Element', 'Fragment'].some((type) => isType(value, type));\n}\n\nexport function isNodeList(value: unknown): value is NodeList {\n return isType(value, 'NodeList');\n}\n\nexport function isMouseEvent(value: unknown): value is MouseEvent {\n return isType(value, 'MouseEvent');\n}\n\nexport function isReferenceElement(value: any): value is ReferenceElement {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\n\nexport function getArrayOfElements(value: Targets): Element[] {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\n\nexport function setTransitionDuration(\n els: (HTMLDivElement | null)[],\n value: number\n): void {\n els.forEach((el) => {\n if (el) {\n el.style.transitionDuration = `${value}ms`;\n }\n });\n}\n\nexport function setVisibilityState(\n els: (HTMLDivElement | null)[],\n state: 'visible' | 'hidden'\n): void {\n els.forEach((el) => {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\n\nexport function getOwnerDocument(\n elementOrElements: Element | Element[]\n): Document {\n const [element] = normalizeToArray(elementOrElements);\n\n // Elements created via a